0

我目前正在将 facebook 集成到我的移动 AS3 游戏中。我正在下载朋友的图片,效果很好,目前不是问题。问题是,我试图检测用户是否有剪影(默认)图片或他自己的(is_silhouette 属性);

这是代码:

(response[i].id) 是我从以前的 api 通信中获得的有效用户 ID

...
HasDefault(response[i].id);
...

    private function HasDefault(uid:int):void{
        FacebookMobile.api("/"+uid+"/picture", callbackX);
    }


    private function callbackX(response:Object,fail:Object):void{
    if (response != null){
      trace(response.url);
      trace(response.is_silhouette);
    }else{
      trace("here goes nothing...");
    }

首先要做的事情...上面的代码有两个问题。第一个问题是,除非我使用绝对 URL,否则 facebook 不会响应,因此 API 方法实际上如下所示:

FacebookMobile.api("https://graph.facebook.com/"+uid+"/picture", callbackX);

我不知道为什么我必须在这里使用绝对 url,因为其他任何地方 id/function 都足够好......但这仍然不是主要问题。

如果我使用绝对 URL,我确实会从 facebook 获得有效响应,但根据此https://developers.facebook.com/docs/reference/api/using-pictures/我应该在我的响应对象中获得 response.url 和 response.is_silhouette . 然而,我只收到空的响应对象......我开始非常绝望。

此外,我试图将相同的请求粘贴到https://developers.facebook.com/tools/explorer资源管理器中,然后惊喜......它返回

{
  "data": {
    "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-frc1/somenumbers.jpg", 
    "is_silhouette": false
  }
}

...这正是我需要的...但是在应用程序中我只得到空的响应对象...

4

1 回答 1

1

我不知道你在哪一行 "FacebookMobile.api(" https://graph.facebook.com/ "+uid+"/picture", callbackX);" 做。但是无论是什么库,都不要使用它,因为它不允许您指定要进行的调用。您可以使用 URLLoader 自己调用图形 api 调用。

所以这里有一个神奇的地方出错了:当你请求图片时,你需要能够附加一个额外的变量:“?redirect=false”这告诉 facebook 给你一个 json 响应。如果您没有该变量,您将获得到实际图像的重定向,这通常是人们想要的。要了解它是如何工作的,请测试下面的两个链接,其中一个带有 redirect=false - 你想要的。和一个设置为真 - 你没有。

https://graph.facebook.com/shaverm/picture?redirect=false

https://graph.facebook.com/shaverm/picture?redirect=true

我很确定正在发生的事情是您正在获取图像,而不是描述图像的 json 响应。

于 2013-04-30T19:16:47.597 回答