2017-12-10 11 views
0

Microsoft Graphを使用して認証しています。テストのために、私はウェブスペースにPHP RESTの例をアップロード - ローカル、それは動作しますが、サーバー上で、それは私は、このエラーメッセージが出続ける理由を誰もが知っていMicrosoft Graphは引き続きInvalidArgumentExceptionを発生させます。

Fatal error: Uncaught exception 'InvalidArgumentException' with message  'Required option not passed: "access_token"' 
in vendor/league/oauth2-client/src/Token/AccessToken.php:63 
Stack trace: 
#0 vendor/league/oauth2-client/src/Provider/AbstractProvider.php(755): League\OAuth2\Client\Token\AccessToken->__construct(Array) 
#1 vendor/league/oauth2-client/src/Provider/AbstractProvider.php(562): League\OAuth2\Client\Provider\AbstractProvider->createAccessToken(Array, Object(League\OAuth2\Client\Grant\AuthorizationCode)) 
#2 oauth.php(60): League\OAuth2\Client\Provider\AbstractProvider->getAccessToken('authorization_c...', Array) 
#3 {main} thrown in vendor/league/oauth2-client/src/Token/AccessToken.php on line 63 

を上げ続ける、または少なくともに私を指しますそれを修正する正しい方向は?

コードサンプル:

$provider = new \League\OAuth2\Client\Provider\GenericProvider([ 
    clientId    => 'client-id', // replaced for security reasons 
    clientSecret   => 'client-secret', 
    redirectUri    => 'redirect_uri', 
    urlAuthorize   => 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize', 
    urlAccessToken   => 'https://login.microsoftonline.com/common/oauth2/v2.0/token' 
    urlResourceOwnerDetails => '', 
    scopes     => 'openid profile' 
]); 

$accessToken = $provider->getAccessToken('authorization_code', [ 
     code    => $_GET['code'] 
    ]); // raises the exception 
+0

すでにお気づきのように、access_tokenパラメータが設定されていないためです。サンプルを指すか、関連するコードパスを追加できますか?これにより、ローカルとサーバーの違いを知ることが容易になります。 – RasmusW

+0

ようこそスタックオーバーフロー!あなたは新しいユーザーであるので、[「良い質問をする方法」](https://stackoverflow.com/help/how-to-ask)を読むことをお勧めします。あなたが呼んでいるコードの例はここでも役に立つでしょう。 –

答えて

0

私は右createAccessTokenを呼び出す前に、AbstractProvider :: getAccessTokenに

$prepared['access_token'] = $prepared['id_token']; 

を挿入する場合、私はこのエラーが修正されることを見つけました。私はこれがOAuth2ライブラリのバグであるかどうかは完全にはわかりませんが、今は私にとってはうまくいきます。

関連する問題