2016-08-11 8 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: применение/х-WWW-форм-urlencoded

Параметры:

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

На этом этапе, как я узнаю ресурс для доступа, неясно, какое значение следует отправлять для этого параметра.

Я оставляю пустым и я получаю "Access-Control-Allow-Origin" ошибка:

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.

Тогда вам нужно получить данные услуги (шаг 3)

GET https://api.office.com/discovery/v2.0/me/services 
Authorization: Bearer {access_token} 

маркер доступа должен быть ответ на шаге 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\/" 
    } 
    ] 
} 

Затем вы должны найти serviceResourceId (внутри объекта json в массиве значений) и использовать его для получения правильного токена для одного диска (шаг 4).

+0

Любая идея, как использовать офисное открытие api? Я не могу найти ясный пример. –

+0

[Здесь] (https://msdn.microsoft.com/en-us/office/office365/api/discovery-service-rest-operations) является документом для ссылки на REST API службы обнаружения. –

Смежные вопросы