FB Graph API无法检索配置文件pic

时间:2014-09-05 23:33:01

标签: java android facebook facebook-graph-api

遵循此文档: https://developers.facebook.com/docs/graph-api/reference/v2.1/user/picture

我已尝试使用此代码获取用户个人资料照片:

new Request(session, "me/picture",
                getRequestParameters("type", "large"), HttpMethod.GET,
                new Request.Callback() {

                    public void onCompleted(Response response) {
                        if (response.getError() == null) {

                            GraphObject graphObject = response.getGraphObject();
                            Object a = graphObject.getProperty("data");
                            // .getProperty("url");
                            saveProfilePicInSP("");
                        }
                    }

                    private void saveProfilePicInSP(String profileUrl) {
                        sharedPreferencesProvider.putString(
                                PublicMacros.SP_FB_PROFILE_PIC, profileUrl);

                    }
                }).executeAsync();

但回复是:

{Response:  responseCode: 200, graphObject: GraphObject{graphObjectClass=GraphObject, state={"FACEBOOK_NON_JSON_RESULT":"����\u0000\u0010JFIF\u0000\u0001\u0002\u0000\u0000\u0001\u0000\u0001\u0000\u0000��\u00006Photoshop"}}, error: null, isFromCache:false}

我该如何解决这个问题?

在这里模拟:

https://developers.facebook.com/tools/explorer/145634995501895/?method=GET&path=me%2Fpicture%3Ftype%3Dlarge&version=v2.1

显示不同的回复:

{
  "data": {
    "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xpa1/v/t1.0-1/s200x200/10491996_10154355617635153_5470840249552886594_n.jpg?oh=4dd714d8106d30cd7e548ad3380c7f24&oe=54924987&__gda__=1415264790_4286480e7bd886198a68824ae4f25bf1", 
    "is_silhouette": false
  }
}

1 个答案:

答案 0 :(得分:0)

Graph API中几种对象类型的/…/picture边提供了两种不同的结果“格式”:

  • 你可以获得一个JSON结构,其中包含一些关于图片的信息(fe is_silhouette,它将告诉你它是用户上传的图像还是Facebook用于对象的默认图像如果用户没有选择一个,则输入{,并在其CDN上显示url图片的网址),或者

  • 您可以获得一个HTTP响应,该响应会在其CDN上发布重定向到图片的位置 - 有用的f.e.用于直接客户端显示图片,或者如果您想在应用程序中请求和存储它。

参数redirect允许您明确指定您想要的那两个中的哪一个。 (“默认”可以根据我认为的请求条件而有所不同,因此最好明确指定它。)


仅供参考,因为它在某些情况下也很有用:还有return_ssl_resources,它允许您指定是否要将返回/重定向的URL指向HTTPS或HTTP版本。