2016-08-11 45 views
0

アクセストークンを取得するために、ビジネス用のOneDriveで認証し、サインインしようとしています。OneDrive APIを使用してアクセストークンを取得する

私はAzure Active Directoryに自分のアプリケーションを登録しました。私は自分のclient_IdとClient_Secretを持っています。 OneDrive API Documentationに基づいて次のステップは、アクセストークンを取得するために使用される認証コードを取得するためにログインすることです。私は正常にコードを取得することができていますが、次のステップは、次のパラメータとPOSTです:

POST https://login.microsoftonline.com/common/oauth2/token

のContent-Type:アプリケーション/ x-www-form-urlencodedで

パラメータ:

client_id: 
redirect_uri: 
client_secret: 
code: 
resource: The resource you want to access. ???? 

この時点で、アクセスするリソースをどのように知るのか、このパラメータにどのような値を送るべきかは明確ではありません。

私は空にそれを残していると私は、「アクセス制御 - 許可 - 起源」エラーを取得しています:

XMLHttpRequestがhttps://login.microsoftonline.com/common/oauth2/tokenをロードすることはできません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。 Origin 'http://localhost:23320'はアクセスできません。応答は、HTTPステータスコード400

を持っていた。これは私のコードです:私は本当に任意の助けをいただければ幸いです

var bodyInfo = { 
     client_id: {client_id}, 
     redirect_uri: {redirect_uri}, 
     client_secret: {client_secret}, 
     code: {code}, 
     grant_type: 'authorization_code', 
     resource:????? 

    }; 

    $.ajax({ 
     url: "https://login.microsoftonline.com/common/oauth2/token", 
     type: "POST", 
     data: bodyInfo, 
     success: function (data, textStatus, jqXHR) { 
      window.alert("Saved successfully!"); 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 

     } 
    }); 

答えて

1

あなたもみは、オフィスのを使用する必要がありますが、APIを発見(そして最初にそれへの認証)が必要リソースを知っている:

In most cases, the OneDrive for Business API endpoint URL will not be known. To discovery the endpoint URL, you need to make a call to the Office 365 Discovery API. To authenticate with the discovery API, you need to request an access token for resource https://api.office.com/discovery/ . Make sure to include the trailing/character, otherwise your app will be denied access to the discovery API.

次にあなたが

GET https://api.office.com/discovery/v2.0/me/services 
Authorization: Bearer {access_token} 
(ステップ3)サービスデータを取得する必要があります

アクセストークンは、ステップ2

の応答にする必要があり、応答は次のようにする必要があります:

{ 
    "@odata.context": "https:\/\/api.office.com\/discovery\/v1.0\/me\/$metadata#allServices", 
    "value": [ 
    { 
     "@odata.type": "#Microsoft.DiscoveryServices.ServiceInfo", 
     "capability": "MyFiles", 
     "serviceApiVersion": "v2.0", 
     "serviceEndpointUri": "https:\/\/contoso-my.sharepoint.com\/_api\/v2.0", 
     "serviceResourceId": "https:\/\/contoso-my.sharepoint.com\/" 
    } 
    ] 
} 

(値配列のjsonオブジェクト内にある)serviceResourceIdを見つけて、それを使用して1つのドライブに適切なトークンを取得します(手順4)。

+0

オフィスのディスカバリAPIの使い方を知りたいですか?私は明確な例を見つけることができません。 –

+0

[こちら](https://msdn.microsoft.com/en-us/office/office365/api/discovery-service-rest-operations)は、ディスカバリーサービスのREST APIリファレンスのドキュメントです。 –

関連する問題