97 lines
2.5 KiB
PHP
97 lines
2.5 KiB
PHP
<?php
|
|
/**
|
|
* Hybridauth
|
|
* https://hybridauth.github.io | https://github.com/hybridauth/hybridauth
|
|
* (c) 2020 Hybridauth authors | https://hybridauth.github.io/license.html
|
|
*/
|
|
|
|
namespace Hybridauth\Provider;
|
|
|
|
use Hybridauth\Adapter\OAuth2;
|
|
use Hybridauth\Exception\UnexpectedApiResponseException;
|
|
use Hybridauth\Data;
|
|
use Hybridauth\User;
|
|
|
|
/**
|
|
* AutoDesk OAuth2 provider adapter.
|
|
*/
|
|
class AutoDesk extends OAuth2
|
|
{
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected $scope = 'data:read';
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected $apiBaseUrl = 'https://developer.api.autodesk.com/';
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected $authorizeUrl
|
|
= 'https://developer.api.autodesk.com/authentication/v1/authorize';
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected $accessTokenUrl
|
|
= 'https://developer.api.autodesk.com/authentication/v1/gettoken';
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected $refreshTokenUrl
|
|
= 'https://developer.api.autodesk.com/authentication/v1/refreshtoken';
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected $apiDocumentation
|
|
= 'https://forge.autodesk.com/en/docs/oauth/v2/developers_guide/overview/';
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function initialize()
|
|
{
|
|
parent::initialize();
|
|
|
|
if ($this->isRefreshTokenAvailable()) {
|
|
$this->tokenRefreshParameters += [
|
|
'client_id' => $this->clientId,
|
|
'client_secret' => $this->clientSecret,
|
|
'grant_type' => 'refresh_token',
|
|
];
|
|
}
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*
|
|
* See: https://forge.autodesk.com/en/docs/oauth/v2/reference/http/users-@me-GET/
|
|
*/
|
|
public function getUserProfile()
|
|
{
|
|
$response = $this->apiRequest('userprofile/v1/users/@me');
|
|
|
|
$collection = new Data\Collection($response);
|
|
|
|
$userProfile = new User\Profile();
|
|
|
|
$userProfile->identifier = $collection->get('userId');
|
|
$userProfile->displayName
|
|
= $collection->get('firstName') .' '. $collection->get('lastName');
|
|
$userProfile->firstName = $collection->get('firstName');
|
|
$userProfile->lastName = $collection->get('lastName');
|
|
$userProfile->email = $collection->get('emailId');
|
|
$userProfile->language = $collection->get('language');
|
|
$userProfile->webSiteURL = $collection->get('websiteUrl');
|
|
$userProfile->photoURL
|
|
= $collection->filter('profileImages')->get('sizeX360');
|
|
|
|
return $userProfile;
|
|
}
|
|
}
|