Я использую oauth2-microsoft для разработки инструмента «Войти в Microsoft» для моего приложения. Я успешно аутентифицируюсь и получаю токен, но затем получаю сообщение об ошибке из примера кода.
Я использую приведенный ниже пример кода и пробовал различные комбинации URL-адресов в поле 'urlResourceOwnerDetails', в том числе оставляя его пустым.
$provider = new \Stevenmaguire\OAuth2\Client\Provider\Microsoft([
'clientId' => '<redacted>',
'clientSecret' => '<redacted>',
'redirectUri' => 'http://localhost/test.php',
'urlAuthorize' => 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',
'urlAccessToken' => 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
'urlResourceOwnerDetails' => 'https://graph.microsoft.com/v1.0/me/drive'
]);
$options = [
'scope' => ['wl.basic', 'wl.signin']
];
После этого идет аутентификация и генерация токена.
Тогда эта строка выдает ошибки:
$user = $provider->getResourceOwner($token);
Токен определенно генерируется, как я могу echo $token
и вижу его.
Приведенный выше код должен создать объект $user
, который содержит сведения о зарегистрированном пользователе. Однако вместо этого он генерирует следующие ошибки:
Если 'urlResourceOwnerDetails'
установлен на https://graph.microsoft.com/v1.0/me/drive
, я получаю:
League\OAuth2\Client\Provider\Exception\IdentityProviderException: Access token is empty
Если 'urlResourceOwnerDetails'
установлено на https://outlook.office.com/api/v2.0/me
, я получаю:
UnexpectedValueException: Invalid response received from Authorization Server. Expected JSON.
А если 'urlResourceOwnerDetails'
пусто, я получаю:
GuzzleHttp\Exception\RequestException: cURL error 3: malformed (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)
Есть идеи, пожалуйста?