2016-08-09 14 views
9

私の会社のカレンダービューを作成して、どの従業員が利用可能かを表示しようとしています。私はAzureでアプリを作ったが、システムにログオンするとアクセストークンを得るが、情報を得ることはできない。PHPのOffice 365 API

私はカール使用して要求URLを構築し、私の要求

array(6) { 
[0]=> 
    string(28) "User-Agent: php-tutorial/1.0" 
    [1]=> 
    string(588) "Authorization: Bearer ~ACCESS_TOKEN~" 
    [2]=> 
    string(24) "Accept: application/json" 
    [3]=> 
    string(55) "client-request-id: ~GUID~" 
    [4]=> 
    string(30) "return-client-request-id: true" 
    [5]=> 
    string(45) "X-AnchorMailbox: ~MAIL~" 
} 

でこのヘッダを送信すると、私は応答として得るすべてがある:「私は間違っている」

何をしているのですか?

UPDATE

でログインした後、私は、アプリへのアクセスを許可したい場合は、Microsoftは求めていませんが、それは私にアクセストークンを付与しません。これが問題だろうか?どうすれば許可を求めることができますか?ログインして情報を取得しようとした後

UPDATE 2

、私は言って401エラーを取得:アクセスが拒否されました。私はすでにアクセストークンを私に与えたと思うのは不思議です。 3

数日、さらに

UPDATEと私はそれが動作するかどうかを確認するために、いくつかの例やチュートリアルのコードを試してみました。しかし、これらのアプリでさえ、apiは動作していないようです。 これは私が試したプロジェクトです。

https://github.com/microsoftgraph/php-connect-rest-sample

https://dev.outlook.com/restapi/tutorial/php

+0

あなたはどちらのAPIを使用していますか? –

+0

私はopenid、mail.read、calendars.read、contacts.readという異なるAPIを試しました。しかし、奇妙なことは、私がログオンすると、許可を求めないことです – apero

+0

こんにちは、apero、あなたはhttps://graph.microsoft.io/en-us/graph-explorer#を活用してAPIをテストしようとしましたか?その権限の問題があるかどうかを確認しますか? –

答えて

6

https://graph.microsoft.io/en-us/docs/overview/errorsでエラーリストを従えばあなたは401エラーを取得するとき、それは

必要な認証情報は、リソースの欠落または無効のいずれかであることを意味します。

アクセストークンにアプリケーションが要求するリソースのスコープが含まれていない可能性があります。例えば。

あなたはカレンダービューのリソースを一覧表示したい場合、およびhttps://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/user_list_calendarviewの文書に従って、以下のスコープの

一つは、このAPIを実行するために必要です:Calendars.Readを。 Calendars.ReadWrite

、あなたのAzure ADアプリケーションのポータルにログインマークされているかどうかマイクロソフトグラフの権限Have full access to user calendarsまたはRead user calendarsを確認してください。

また、アクセストークンを使用してレスポンスボディの「スコープ」セクションを確認できます。詳細はhttps://azure.microsoft.com/en-us/documentation/articles/active-directory-protocols-oauth-code/#use-the-authorization-code-to-request-an-access-tokenを参照してください。

+0

後半の反応で申し訳ありませんこれも私には役立ちませんでした:(更新された質問をご覧ください – apero

+0

カール機能に成功しましたか? –

+0

はい、curl関数は成功していますが、エラーは発生しません。$ error is empty。私はゼロを取得します(つまり、$ error = curl_error($ ch);非常に混乱している情報 – apero