遵循此文档: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}
我怎样才能解决这个问题?
在这里模拟:
显示了不同的响应:
{
"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
}
}
/…/picture
Graph API中几种对象类型的边缘提供两种不同的结果“格式”:
你可以得到一个JSON结构有关图片(FE一些信息is_silhouette
,它会告诉你它是否是用户上传的图片或者说默认的图像,Facebook的使用对象类型,如果用户没有选择一个,并url
与CDN上图像的URL),或者
您可以获得HTTP响应,该响应发出重定向到图片CDN上图片位置的信息-对于直接在客户端显示图片,或者要从应用程序内部请求并存储图片很有用。
该参数redirect
允许您显式指定所需的两个。(“默认”可以根据我认为的请求条件而有所不同,因此最好明确指定它。)
仅供参考,因为它在某些情况下也很有用:还提供了一个选项return_ssl_resources
,它允许您指定是否要返回的URL /发出的重定向指向HTTPS或HTTP版本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句