Java 中的 Microsoft Graph API 个人资料图片更新

尼古拉斯

我正在尝试使用 Microsoft Graph API 来更新 Azure AD 帐户的用户图片。

我已经关注了这个https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/profilephoto_update对我来说似乎很清楚,但我无法上传图片,它失败并显示 ResourceNotFound 错误消息。

在我的代码下方检索令牌并上传用户图片。检索令牌效果很好。

private String getToken() throws Exception {
    String access_token = "";
    String url = "https://login.windows.net/TENANTID/oauth2/token";
    HttpClient client = HttpClients.createDefault();
    HttpPost post = new HttpPost(url);

    post.setHeader("Content-Type", "application/x-www-form-urlencoded");

    List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
    urlParameters.add(new BasicNameValuePair("grant_type", "client_credentials"));
    urlParameters.add(new BasicNameValuePair("client_id", "APPLICATIONID"));
    urlParameters.add(new BasicNameValuePair("client_secret", "SECRET"));
    urlParameters.add(new BasicNameValuePair("resource", "https://graph.microsoft.com"));

    post.setEntity(new UrlEncodedFormEntity(urlParameters));

    HttpHost proxy = new HttpHost("PROXYADDRESS.com", 8080, "http");
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
    post.setConfig(config);

    HttpResponse response = client.execute(post);
    logger.debug("Sending 'POST' request to URL : " + url);
    logger.debug("Post parameters : " + post.getEntity());
    logger.debug("Response Code : " + response.getStatusLine().getStatusCode());

    String responseAsString = EntityUtils.toString(response.getEntity());
    try {
        access_token = responseAsString.split(",")[6].split("\"")[3]; // get the access_token from response
        logger.debug(access_token);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
    return access_token;
}

现在我尝试更新一个帐户的用户图片。

public String updatePicture(String token) throws ClientProtocolException, IOException, URISyntaxException {
    File file = new File("C:\\USERPICTURE.jpg");
    byte[] bytesArray = new byte[(int) file.length()];
    FileInputStream fis = new FileInputStream(file);
    fis.read(bytesArray);
    fis.close();
    byte[] bytesEncoded = new Base64().encode(bytesArray);

    String url = "https://graph.microsoft.com/v1.0/users/[email protected]/photo/$value";
    HttpClient client = HttpClients.createDefault();

    HttpPut request = new HttpPut(url);
    request.setHeader("Authorization", "Bearer " + token);
    request.setHeader("Content-Type", "image/jpeg");
    request.setEntity(new ByteArrayEntity(bytesEncoded));

    HttpHost proxy = new HttpHost("PROXYADDRESS.COM", 8080, "http");
    RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
    request.setConfig(config);

    HttpResponse response = client.execute(request);
    logger.debug("Sending 'PUT' request to URL : " + url);
    logger.debug("Post parameters : " + request.getEntity());
    logger.debug("Response Code : " + response.getStatusLine().getStatusCode());

    String responseAsString = EntityUtils.toString(response.getEntity());
    logger.debug(responseAsString);
    return responseAsString;
}

这就是我的结果..

2018-08-13 11:54:10,511 DEBUG (main) [IDM(getToken:391)] Sending 'POST' request to URL : https://login.windows.net/XXXXXXX/oauth2/token
2018-08-13 11:54:10,511 DEBUG (main) [IDM(getToken:392)] Post parameters : [Content-Type: application/x-www-form-urlencoded,Content-Length: 182,Chunked: false]
2018-08-13 11:54:10,511 DEBUG (main) [IDM(getToken:393)] Response Code : 200
2018-08-13 11:54:10,511 DEBUG (main) [IDM(getToken:398)] XXXXXXXXXXXX
2018-08-13 11:54:11,791 DEBUG (main) [IDM(updatePicture:448)] Sending 'PATCH' request to URL : https://graph.microsoft.com/v1.0/users/[email protected]/photo/$value
2018-08-13 11:54:11,791 DEBUG (main) [IDM(updatePicture:449)] Post parameters : [Content-Length: 5252,Chunked: false]
2018-08-13 11:54:11,791 DEBUG (main) [IDM(updatePicture:450)] Response Code : 404
2018-08-13 11:54:11,791 DEBUG (main) [IDM(updatePicture:453)] {
  "error": {
    "code": "ResourceNotFound",
    "message": "Resource could not be discovered.",
    "innerError": {
      "request-id": "XXXXXXXXXXXXXXXXX",
      "date": "2018-08-13T09:54:11"
    }
  }
}

有人有解决这个问题的想法吗?谢谢

Tom Sun - MSFT

你知道怎么去掉图片吗?在 Microsoft Graph 文档中未找到

据我所知,没有删除照片休息 API。photo Rest API 中,我们发现没有删除照片 API。

我尝试用邮递员删除照片。我得到的方法是不允许的

在此处输入图片说明

我还在 office365 网站上查看了我的个人资料,但没有删除照片的选项。但是,如果您想更改照片,则可以将照片更新为您提到的另一张照片。

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Microsoft Graph API-获取定义大小的个人资料图片

来自分类Dev

FB Graph API无法检索个人资料图片

来自分类Dev

获取页面个人资料图片Graph API android

来自分类Dev

从Facebook Graph-API获取个人资料图片

来自分类Dev

FB Graph API无法检索个人资料图片

来自分类Dev

Facebook Graph API个人资料图片网址

来自分类Dev

从Graph API URL复制Facebook个人资料图片

来自分类Dev

如何使用 Microsoft Graph API 检索用户的个人资料和用户的日历?

来自分类Dev

如何使用Graph API或FQL检索Facebook个人资料图片评论

来自分类Dev

通过Facebook Graph API快速获取个人资料图片,返回“不支持的URL”

来自分类Dev

使用php sdk和Graph Api获取更大的个人资料图片

来自分类Dev

使用php sdk和Graph Api获取更大的个人资料图片

来自分类Dev

在Django中自动更新个人资料图片

来自分类Dev

如何在 DRF 中更新个人资料图片

来自分类Dev

如何使用Graph API更新个人资料封面照片?

来自分类Dev

如何在Swift 3中使用Facebook API访问个人资料图片?

来自分类Dev

使用PHP从API链接中获取大型个人资料图片

来自分类Dev

如何使用graph API v2.0获取Facebook用户朋友和朋友的个人资料图片?

来自分类Dev

使用Facebook的Graph API v2.3访问个人资料图片而无需用户登录

来自分类Dev

Facebook Graph API获取用户的个人资料照片

来自分类Dev

Facebook Graph API:链接到用户的个人资料页面

来自分类Dev

Facebook Graph API获取用户的个人资料照片

来自分类Dev

Facebook Graph API:链接到用户的个人资料页面

来自分类Dev

使用 Facebook Graph API 搜索公开个人资料

来自分类Dev

在Facebook Graph API中获取Facebook用户个人资料ID,而不是应用程序范围的用户ID

来自分类Dev

使用Microsoft Graph API更新Excel命名范围中的值

来自分类Dev

我想更新所有帖子中的用户个人资料图片以及他在用户更新/更改他的个人资料图片时发布的图片

来自分类Dev

尝试使用Microsoft Graph API v1.0查询用户的office365个人资料照片时获取“ ErrorAccessDenied”

来自分类Dev

使用PowerShell更新用户的Microsoft个人资料图片

Related 相关文章

  1. 1

    Microsoft Graph API-获取定义大小的个人资料图片

  2. 2

    FB Graph API无法检索个人资料图片

  3. 3

    获取页面个人资料图片Graph API android

  4. 4

    从Facebook Graph-API获取个人资料图片

  5. 5

    FB Graph API无法检索个人资料图片

  6. 6

    Facebook Graph API个人资料图片网址

  7. 7

    从Graph API URL复制Facebook个人资料图片

  8. 8

    如何使用 Microsoft Graph API 检索用户的个人资料和用户的日历?

  9. 9

    如何使用Graph API或FQL检索Facebook个人资料图片评论

  10. 10

    通过Facebook Graph API快速获取个人资料图片,返回“不支持的URL”

  11. 11

    使用php sdk和Graph Api获取更大的个人资料图片

  12. 12

    使用php sdk和Graph Api获取更大的个人资料图片

  13. 13

    在Django中自动更新个人资料图片

  14. 14

    如何在 DRF 中更新个人资料图片

  15. 15

    如何使用Graph API更新个人资料封面照片?

  16. 16

    如何在Swift 3中使用Facebook API访问个人资料图片?

  17. 17

    使用PHP从API链接中获取大型个人资料图片

  18. 18

    如何使用graph API v2.0获取Facebook用户朋友和朋友的个人资料图片?

  19. 19

    使用Facebook的Graph API v2.3访问个人资料图片而无需用户登录

  20. 20

    Facebook Graph API获取用户的个人资料照片

  21. 21

    Facebook Graph API:链接到用户的个人资料页面

  22. 22

    Facebook Graph API获取用户的个人资料照片

  23. 23

    Facebook Graph API:链接到用户的个人资料页面

  24. 24

    使用 Facebook Graph API 搜索公开个人资料

  25. 25

    在Facebook Graph API中获取Facebook用户个人资料ID,而不是应用程序范围的用户ID

  26. 26

    使用Microsoft Graph API更新Excel命名范围中的值

  27. 27

    我想更新所有帖子中的用户个人资料图片以及他在用户更新/更改他的个人资料图片时发布的图片

  28. 28

    尝试使用Microsoft Graph API v1.0查询用户的office365个人资料照片时获取“ ErrorAccessDenied”

  29. 29

    使用PowerShell更新用户的Microsoft个人资料图片

热门标签

归档