【问题标题】:how to set a facebook profile picture using the graph api如何使用图形 api 设置 facebook 个人资料图片
【发布时间】:2011-05-17 10:43:36
【问题描述】:

有没有办法使用graph api改变用户的头像?

我知道你不能使用其他 api (reference),但我在新的图形 api 中找不到任何东西。

【问题讨论】:

标签: facebook facebook-graph-api


【解决方案1】:

使用 Graph API 将图片上传到现有相册(或创建新相册)。 看起来像这样:

  $args = array('message' => 'Caption');
  $args['image'] = '@' . realpath("the_image.png");

  try {
    $data = $facebook->api('/'.$album_uid.'/photos', 'post', $args);
  }
  catch(Exception $e) {
    print "<pre>";
    print_r($e);
    print "</pre>";
  }

然后通过 Graph API 获取上传的图片并重定向到图片的链接,在查询字符串中添加&amp;makeprofile=1。用户现在将被重定向到个人资料图像裁剪页面:

try {
  $pictue = $facebook->api('/'.$data['id']);
  header("Location: ".$pictue['link']."&makeprofile=1");
}
catch(Exception $e) {
  print "<pre>";
  print_r($e);
  print "</pre>";
}

【讨论】:

  • 谢谢。 Facebook 不介意我们这样做吗?没有违反政策?
  • @Mattias 我不认为这违反了政策,因为您没有自己设置个人资料图片。它只会弹出一个对话框,允许用户这样做,他可以选择不这样做。
  • 这不起作用。我正在尝试使用带有 url graph.facebook.com/albumid/photos 字段的图形 api 资源管理器:- 消息、url、makeprofile 我做错了什么?
  • 如何获取album_uid
  • 遗憾的是,'makeprofile=1' 技巧似乎不再起作用了。它 facebook 使用的 URL,但它只有在您从剧院视图中单击它时才有效。
【解决方案2】:

PicBadges 应用程序(不再可用)清楚地完成了这项工作。看看他们的应用程序。很清楚他们是如何实施的。

他们不会直接将图片上传到“个人资料图片”相册。相反,他们像往常一样上传到他们自动生成的相册(在他们的应用程序名称上),然后选择图片作为“个人资料图片”。但是,此方法涉及将用户重定向到他们需要在完成之前裁剪它的页面。

需要注意的有趣实现!

【讨论】:

  • 我已经编辑了答案以删除网址,现在它指向一个广告页面。
【解决方案3】:

您可以使用 Graph API 上传到用户的个人资料图片相册,但您似乎无法更新 /me/picture 值以将用户当前的个人资料图片设置为您上传的图片。

【讨论】:

    【解决方案4】:

    用户图片: Graph API 版本 v6.0

    阅读

    你可以得到端点/{user-id}/picture的图片

    创作

    您无法在此端点上执行此操作。

    更新

    您无法在此端点上执行此操作。

    删除

    您无法在此端点上执行此操作。

    【讨论】:

      【解决方案5】:

      我也有这个问题。我已经设法使用此端点上传了个人资料图片。

      link 提供有关如何上传个人资料图片的信息

              private async uploadProfilePhoto(pageId:string, accessToken: string, photoUrl: string){
                  let url = FACEBOOK_API_URL + `${pageId}/picture`+ 
                      `?access_token=${accessToken}`+
                      `&picture=${photoUrl}`;
                  let response = null;
      
                  try {
                   response = await axios({
                      method: 'post',
                      url:  url,
                  }); 
                  } catch (err) {
                      /**  Here this error occures but the profile image is still uploaded. 
                       * {message: 'Unsupported post request.', type: 'GraphMethodException', code: 100, fbtrace_id: 'AGhsadasdaiqyf_YHJaztdasdadG7'
                       */           
                  }
      
                  return response;
              }
      

      然后要获取头像的 id,以备不时之需,您可以在此端点上执行 get 请求。

      const FACEBOOK_API_URL ='https://graph.facebook.com/v7.0/'
      let url = FACEBOOK_API_URL + `${pageId}/photos`+
                  `?access_token=${accessToken}` +
                  `&fields=picture`;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-30
        • 1970-01-01
        • 1970-01-01
        • 2010-12-11
        • 2011-03-01
        • 2016-05-22
        • 1970-01-01
        • 2012-06-08
        相关资源
        最近更新 更多