Giu*_*der 15 android facebook facebook-graph-api facebook-android-sdk
我关注Facebook SDK 3.0 for Android的问题.我想在不使用他们的ProfilePictureView小部件的情况下获取我的(和我的朋友)个人资料图片,所以如果我使用Graph Explorer,我会看到Json响应是:
{
"data": {
"url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-ash4/372127_1377011138_1538716206_q.jpg",
"is_silhouette": false
}
}
Run Code Online (Sandbox Code Playgroud)
我需要"url"路径下载并显示图片,但使用以下代码:
Request.executeGraphPathRequestAsync(Session.getActiveSession(),
"me/picture",
new Request.Callback() {
@Override
public void onCompleted(Response response) {
GraphObject go = response.getGraphObject();
Log.i("APP_NAME", go.toString());
}
});
Run Code Online (Sandbox Code Playgroud)
我得到了这个:
GraphObject{graphObjectClass=GraphObject,
state={"FACEBOOK_NON_JSON_RESULT":"????\u0000\u0010JFIF\u0000\u0001\u0001\u0000\u0000\u0001\u0000\u0001\u0000\u0000??\u0000"}}
Run Code Online (Sandbox Code Playgroud)
有人可以帮帮我吗?谢谢
Cromir
Jes*_*hen 10
一种更简单的方法是执行GET请求,graph.facebook.com/USER_ID/picture这样您就不必首先请求图片的URL,然后执行另一个GET请求从给定的URL下载图片.
而不是使用Request.executeGraphPathRequestAsync,只需GET对上面的URL 执行正常请求,例如http://graph.facebook.com/4/picture.
You can retreive user information for executeMeRequest in facebook 3.0 sdk.
public void executeMeRequest(Session session) {
Bundle bundle = new Bundle();
bundle.putString("fields", "picture");
final Request request = new Request(session, "me", bundle,
HttpMethod.GET, new Request.Callback() {
@Override
public void onCompleted(Response response) {
GraphObject graphObject = response.getGraphObject();
if(graphObject != null) {
try {
JSONObject jsonObject = graphObject.getInnerJSONObject();
JSONObject obj = jsonObject.getJSONObject("picture").getJSONObject("data");
final String url = obj.getString("url");
new Thread(new Runnable() {
@Override
public void run() {
final Bitmap bitmap = BitmapFactory.decodeStream(HttpRequest(url);
runOnUiThread(new Runnable() {
@Override
public void run() {
imageView.setImageBitmap(bitmap);
}
});
}
}).start();
} catch (JSONException e) {
e.printStackTrace();
}
}
}
});
Request.executeBatchAsync(request);
}
public static InputStream HttpRequest(String strUrl) {
HttpResponse responce = null;
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI(strUrl));
responce = httpClient.execute(request);
HttpEntity entity = responce.getEntity();
return entity.getContent();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11477 次 |
| 最近记录: |