【问题标题】:Can't share pictures using Facebook API无法使用 Facebook API 分享图片
【发布时间】:2012-02-27 01:34:43
【问题描述】:

我对 Facebook API 很陌生,目前我正在使用 Facebook PHP SDK。因此,我有兴趣在我的墙上 (/me/links/) 上自动从 facebook 分享某张图片(如 http://www.facebook.com/photo.php?fbid=10150286544861729&set=a.10150286544851729.375565.20531316728&type=1)。 因此,在 POST 请求中,我发送参数“source”和“link”,它们都指向同一个 URL(图像 URL)。但是我得到了 OAuthException "(#1500) The url you provide is invalid"。

我已经允许“publish_stream”和“share_item”权限,但最尴尬的是我的代码似乎没有任何问题,但不知何故,应用程序设置,因为如果我得到同样的错误我使用 Graph API Explorer,生成具有相同权限的访问令牌。

我在这里错过了什么?

没关系,现在图形 API 浏览器工作正常,我刚刚生成了另一个令牌,它工作正常。所以,问题可能出在代码上,所以这里是:

    $share = $facebook->api('/me/links', 'POST', array(
                            'source' => urlencode($temp_test),
                            'link' => urlencode($temp_test),
                            ));

有什么问题吗?

【问题讨论】:

    标签: facebook api permissions


    【解决方案1】:

    您不能分享在 facebook 上托管的图片。你可以做什么它首先使用 PHP copy() 函数在你的服务器上复制该图像,然后传递然后从你的服务器传递图像的 URL。

    i.e copy("http://www.facebook.com/photo.php?fbid=10150286544861729&set=a.10150286544851729.375565.20531316728&type=1", "/folder location on your server/image.jpg");
    
    $share = $facebook->api('/me/links', 'POST', array(
                                'source' => "http://yourserver.com".$folder_path.$image,
                                'link' => urlencode($temp_test),
                                ));
    

    【讨论】:

    • 如果我删除“源”而只使用“链接”会怎样?我还需要将图像复制到我的服务器吗?
    • 而且我知道它变得有点持久,但是为什么我可以在 Graph API Explorer 上共享图像(将参数“链接”传递给 facebook 图片)但我不能在我的应用程序中这样做?
    • 对此不太了解,但想一想,如果您有图片链接,但用户在该图片上设置了一些隐私,fb 如何允许您的应用发布该图片?跨度>
    【解决方案2】:

    如果您的 Facebook 相册中已经有一张图片,并且想要在您的时间轴或朋友的时间轴上分享该图片,那么您可以使用 object_attachment 标签。这就是你在 Obj-C 中的做法:

        NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                       //                                 @"http://www.bitsonthego.com", @"link",
                                       {image id of your image goes here}, @"object_attachment",
                                       @"my profile", @"name",
                                       @"description", @"description",
                                       @"name of the post", @"name",
                                       @"caption of my post", @"caption",
                                       @"a message", @"message",
                                       nil];
    
        [facebook requestWithGraphPath:@"/me/feed" andParams:params andHttpMethod:@"POST" andDelegate:self]; 
    

    无需制作图像的另一个副本或将其托管在本地。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多