使用Facebook API设置用户的封面照片

时间:2014-08-18 23:00:02

标签: javascript facebook facebook-graph-api facebook-javascript-sdk

我正在尝试创建一个Facebook应用程序,为用户提供许多不同的选项来设置他们的封面照片。我用来构建应用程序的平台只接受javascript。任何人都可以提供如何实现这一目标的方向吗?

2 个答案:

答案 0 :(得分:1)

我会考虑当前OpenGraph API的正确文档:

https://developers.facebook.com/docs/graph-api/reference/v2.7/cover-photo/

该页明确表示没有创建,更新或删除选项。

还有一种方法可以获取所有相册标识符,然后使用<album-id>/photos调用。但是,当您使用封面相册的<album-id>时,会出现 403 Forbidden 错误。

https://developers.facebook.com/docs/graph-api/reference/v2.7/album/photos

所以听起来很清楚,直接更换封面照片是不可能的。

但是,您的应用仍然可以将照片发布到自己的相册,然后使用以下网址将用户发送到该照片:

http://www.facebook.com/profile.php?preview_cover=PHOTO_ID

要将照片发布到您的应用相册,您只需使用“我”:

// retrieve authorization, we need the token
var auth = FB.getAuthResponse();

// create the variable parameters to be sent
var fd = new FormData();
fd.append("access_token", auth.accessToken);
//fd.append("source", blob); -- this requires a binary image in blob
fd.append("url", "http://example.com/cute.jpg");
fd.append("message", "Message user entered (no pre-fill allowed!)");
fd.append("no_story", false);

// now send that URI to Facebook
$.ajax({
    url: "https://graph.facebook.com/me/photos?access_token=" + auth.accessToken,
      type: "POST",
      data: fd,
      processData: false,
      contentType: false,
      cache: false,
      success: function(data) {
        console.log("Post to album succeeded");
        console.log(data);

        // send the user to change his cover photo with the photo you just uploaded
        window.location = "http://www.facebook.com/profile.php?preview_cover=" + data.id;
      },
      error: function(shr, status, data) {
        console.log("error");
        console.log(shr);
        console.log(status);
        console.log(data);
      },
      complete: function() {
        console.log("Posting to facebook complete");
      }
    });

答案 1 :(得分:0)

您无法通过Graph API设置封面照片。请查看https://developers.facebook.com/docs/graph-api/reference/v2.1/user#nopublishupdatedelete作为参考。