2017-05-09 50 views
0

私はadal.jsを使用してMicrosoft OAuth経由でアクセストークンを生成していますが、アクセストークンを使用してhttps://graph.microsoft.com/v1.0/meエンドポイント(またはgraph.windows.net)次のエラーが表示されます。Authentication_MissingOrMalformed:アクセストークンが見つからないか、形式が正しくありません。OAuthアクセストークンを取得した後にMicrosoft Graph APIにアクセスできません

私はこれをどのように修正することができますか?

<script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.12/js/adal.min.js"></script> 
<script> 
    var authContext = new AuthenticationContext({ 
     instance: 'https://login.microsoft.com/',  
     tenant: 'xxxxxx-xxxxxxx-xxxxxx-xxxxxx', //COMMON OR YOUR TENANT ID 
     clientId: 'xxxxxx-xxxxxxx-xxxxxx-xxxxxx', //REPLACE WITH YOUR CLIENT ID 
     redirectUri: '/login.php', //REPLACE WITH YOUR REDIRECT URL 
     callback: getUser, 
     popUp: true, 
     cacheLocation: 'localStorage' 
    }); 

    ... 

    authContext.login(); 
    // SET COOKIE 
    var newToken = authContext.getCachedToken('tenantid-xxxxxxx-xxxxxx-xxxxxx'); 
    var now = new Date(); 
    now.setTime(now.getTime() + 1 * 3600 * 1000); 
    document.cookie = "token="+newToken+"; expires=" + now.toUTCString() + "; path=/"; 
</script> 

そして、ここで私は/プル私のPHPスクリプトでトークンを使用しようとしています方法は次のとおりです:ここに私の設定はJSでいAuthentication_MissingOrMalformed:

<?php 
// Get the token 
$token = $_COOKIE['token']; 

// Set headers 
$headers = array(
    "Authorization: Bearer " . $token, 
    'Content-Type: application/json' 
); 

// Make request to Graph API 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://graph.windows.net/mywebsite.org/me?api-version=1.6"); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_POST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$response = curl_exec($ch); 
$response = json_decode($response); 
curl_close($ch); 

echo "<pre>"; 
var_dump($response); 
echo "</pre>"; 
?> 

それがないすべては、このエラーを返すでアクセストークンが見つからないか、形式が正しくありません。

どうすればこの問題を修正できますか?正しいリソースを指定しないと問題になりますか?

+0

問題は修正されましたか?そうでない場合は、私に知らせてください。 –

答えて

0

Azure AD Graph RESTを正常に呼び出すには、Azure AD Graphのトーク​​ンを取得する必要があります。

Azure ADグラフのトークンが正しいかどうかを確認するには、トークンを印刷してhereから解析することができます。

audのクレームはhttps://graph.windows.netである必要があります。一致しない場合は、キャッシュからトークンを取得する代わりにacquireTokenを使用してトークンを取得する必要があります。 resourceのパラメータはhttps://graph.windows.netである必要があります。

+0

Microsoft Graphを呼びたい場合は、 '' '' aud'''と '' resource''のparamが '' 'https:// graph.microsoft.com'''であれば同じです。 –

関連する問題