无法使用 Microsoft Graph 更新个人资料照片 API
Can't update profilePhoto with Microsoft Graph API
我能够很好地检索个人资料照片,但在尝试更新照片时 运行 进入 ErrorAccessDenied。据此:
https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/profilephoto_update
User.ReadWrite 权限应该足够了。我已经使用 manage.windowsazure.com 为我的应用程序分配了此权限(并且还尝试授予各种其他权限),但仍然出现错误。这是我授予该应用程序的当前权限集:
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 流程获取 Bearer 令牌,如下所示:
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
然后我尝试像这样更新个人资料照片:
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"
}
}
}
您似乎列出了为您的应用配置的 delegated 权限,但使用客户端凭据流程检索了令牌,该流程使用单独的 application 权限。根据您引用的文档页面,更新用户个人资料照片所需的范围是 User.ReadWrite。这不能通过仅应用范围完成,包括 User.ReadWrite.All。可以使用授权码授予流程更新用户照片(参见 https://graph.microsoft.io/en-us/docs/authorization/app_authorization)
我能够很好地检索个人资料照片,但在尝试更新照片时 运行 进入 ErrorAccessDenied。据此:
https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/profilephoto_update
User.ReadWrite 权限应该足够了。我已经使用 manage.windowsazure.com 为我的应用程序分配了此权限(并且还尝试授予各种其他权限),但仍然出现错误。这是我授予该应用程序的当前权限集:
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 流程获取 Bearer 令牌,如下所示:
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
然后我尝试像这样更新个人资料照片:
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"
}
}
}
您似乎列出了为您的应用配置的 delegated 权限,但使用客户端凭据流程检索了令牌,该流程使用单独的 application 权限。根据您引用的文档页面,更新用户个人资料照片所需的范围是 User.ReadWrite。这不能通过仅应用范围完成,包括 User.ReadWrite.All。可以使用授权码授予流程更新用户照片(参见 https://graph.microsoft.io/en-us/docs/authorization/app_authorization)