无法使用 azure graph 中的代码获取应用程序的令牌

Unable to get tokens for app using code from azure graph

我在 http://apps.dev.microsoft.com/ 中创建了一个应用程序并尝试从我的网络应用程序连接 这是我的代码:

  $data = array (
          'code' => $code,
          'client_secret' => 'C2A32632155A3270220244A5774431C58126F9B5',
          'client_id' => '49c1c823-b423-4673-af57-7be1ab39e386',
          'grant_type' => 'authorization_code',
          'redirect_uri' => 'http://localhost/crm/contacts/connectOffice',
          'scope' => 'offline_access Contacts.ReadWrite'
        );
    $url = 'https://login.microsoftonline.com/common/oauth2/v2.0/token';
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);      
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);  
    $result = curl_exec($curl);

我收到回复:

[error] => invalid_client [error_description] => AADSTS70002: Error validating credentials. AADSTS50012: Invalid client secret is provided. Trace ID: 47f5eaa3-2ea0-45bc-9bfa-8457395ae354 Correlation ID: 3007e67d-120d-4cf1-a0e6-1863d202b233 Timestamp: 2017-01-12 13:12:28Z [error_codes] => Array ( [0] => 70002 [1] => 50012 )

[timestamp] => 2017-01-12 13:12:28Z
[trace_id] => 47f5eaa3-2ea0-45bc-9bfa-8457395ae354
[correlation_id] => 3007e67d-120d-4cf1-a0e6-1863d202b233

我很确定我在请求中提供了正确的客户端密码和客户端 ID,但我仍然总是收到此错误。任何人都可以建议我可能哪里出错了,或者我还需要做些什么来纠正这个问题?

您现在在客户端密码字段中使用的值实际上是一个 Public 密钥,如果您点击 Generate New Key Pair 按钮,就会生成该密钥。

对于您要执行的操作,您需要点击门户中的 Generate New Password 按钮以获取 23 个字符的客户端密码。那应该允许您获得授权代码。

另一件事,请确保如果您尝试获取授权代码,您使用了正确的授权端点 https://login.microsoftonline.com/common/oauth2/v2.0/authorize。当您有授权码并想用它交换令牌时,将使用上面的 url。