4

我无法将画布应用程序中的图像发布到用户的相册。根据 Facebook 文档:

为了将照片发布到用户的相册,您必须具有 publish_stream 权限。授予此权限后,您可以通过发出 HTTP POST 请求来上传照片,其中包含照片内容和可选描述到 Graph API 连接:

  1. https://graph.facebook.com/USER_ID/photos - 照片将发布到为您的应用创建的相册中。如果您的应用尚不存在,我们会自动为您的应用创建相册。以这种方式上传的所有照片都将添加到同一个相册中。
  2. https://graph.facebook.com/ALBUM_ID/photos - 照片将发布到特定的现有相册,由 ALBUM_ID 表示。

所以,从第一点开始,如果我上传这样的图像......

Facebook.api("me/photos",imagePostCallback,{message:"",image:myImageBitmap,fileName:''},URLRequestMethod.POST);

...然后我可以期待它将我的图像放在以我的应用程序命名的相册中,如果需要它会创建它吗?

不是这样

当相册不存在时,实际发生的情况是上传的图像被推送到任何其他存在的方便相册中,这些相册通常是为其他应用程序(并由其他应用程序创建)。这有点痛苦。

到目前为止,我已经尝试了以下方法:

  1. 禁用沙盒模式。我原以为该应用程序可能无法创建新专辑,因为它处于沙盒模式,但是禁用沙盒模式没有任何区别,我可以在启用它的情况下直接创建专辑。
  2. 检查我的相册是否存在并在必要时创建它。我可以检查我的相册并在它不存在时创建它,但是我不能上传图像,因为Facebook.api如果不是作为用户交互的直接结果调用上传图像的 POST 调用将失败。

所以现在我有点难过。显然,我不可能让我的应用程序将图像发布到竞争对手的相册,但目前我能看到的唯一选择是如果必须创建相册,有效地让用户提交他们的图像两次。有任何想法吗?

4

1 回答 1

3

我猜您的参数中需要 access_token :) 在用户的 Facebook 上发布内容时,您总是需要这个(获取信息时并不总是需要)。获取accesstoken的方法如下图:)

public function post():void
{
    var _params:Object = new Object();

    _params.access_token = Facebook.getSession().accessToken;
    _params.message = "";
    _params.image = myImageBitmap;
    _params.fileName = "";

    Facebook.api("me/photos", imagePostCallback, _params, URLRequestMethod.POST);
}

在请求您的应用程序权限时,还要确保您拥有正确的权限。

编辑

好的,所以我错过了您的编辑;)应该可以创建自己的专辑。看看这个 php-code for graph api。代码也应该能够解析为 AS3。

http://developers.facebook.com/blog/post/498/

编辑2

好的,我做了更多的挖掘(似乎很有趣)。使用图形 api 时,这实际上应该有效。

FB.api('/me/albums', albumCreateCallback, {name: 'name of the album', message: 'description of the album'}, URLRequestMethod.POST);

然后,当您调用另一个 api 调用将您的图片上传到专辑 CreateCallback 时,它应该可以工作并上传您的图片(根据我发现的内容)。

于 2011-07-07T19:13:05.523 回答