プロファイル写真を取得することはできますが、写真を更新しようとするとErrorAccessDeniedが実行されます。これによると:Microsoft Graph APIを使用してprofilePhotoを更新できません
https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/profilephoto_update
User.ReadWrite許可が十分でなければなりません。私はmanage.windowsazure.comを使って自分のアプリケーションにこの特権を割り当てましたが(また、あらゆる種類の他の特権を許可しようとしましたが)、まだエラーが発生します。私はその後、更新しよう
curl -d grant_type=client_credentials \
-d client_id=CLIENT_ID \
-d client_secret=CLIENT_SECRET
-d resource=https://graph.microsoft.com \
https://login.microsoftonline.com/DOMAINNAME/oauth2/token
:
Directory.AccessAsUser.All Directory.Read.All Directory.ReadWrite.All email Group.Read.All Group.ReadWrite.All MailboxSettings.ReadWrite offline_access profile User.Read User.Read.All User.ReadBasic.All User.ReadWrite User.ReadWrite.All
次のように私はclient_credentialsフローとベアラトークンを取得しています:ここで私はアプリに許可している権限の現在のセットですこのようなプロフィール写真:
curl -H "Authorization: Bearer BEARERTOKEN" \
--request PATCH \
-H "Content-Type: image/jpeg" \
-d @photo.jpg
https://graph.microsoft.com/v1.0/users/USERPRINCIPALNAME/photo/\$value
そして、私は次のエラーを取得:
を{
"error": {
"code": "ErrorAccessDenied",
"message": "Access is denied. Check credentials and try again.",
"innerError": {
"request-id": "REQUESTID",
"date": "2016-05-23T16:42:21"
}
}
}
User.ReadWrite.AllとUser.ReadWriteの混乱を残念に思って、投稿を修正しました。 アプリ専用スコープでプロファイル写真を更新できないと言いたいのはどこですか?それが事実なら、それは実際にレンチを作品に投げる。このアプリケーションでは、認証コードなどのエンドユーザーとのやり取りをせずに、ユーザーの写真をスタンドアロンプロセスとして更新できる必要があります。 この背景には、AADの同期プロセスでユーザーの写真が確実に更新されていないように見えることがあります。そのために、別のプロセスを設定しようとしています。 –
ああ、今私はそれを得ると思う。 User.ReadWriteは委任されたアクセス許可であり、アプリケーションのアクセス許可ではありません。そして、それは写真を更新するための上記のページで文書化されている唯一の許可された範囲です。 混乱していたのは、私が*写真をうまく読むことができたということでした。しかしその理由は、GETメソッド*もUser.ReadWrite.Allのようなアプリケーションパーミッションスコープをサポートしているからです。 (そしてそれらは対応するページに記載されています)。 このアプローチ全体を再考する必要があるように見えます。 –