Swa*_*yam 7 android facebook facebook-graph-api
在我的Android应用程序中,我试图从他的Facebook帐户获取用户的封面照片.
我可以使用下面的代码获取个人资料图片.
profilePicUrl = new URL("http://graph.facebook.com/" + userId + "/picture?type=large");
profilePicBmp = BitmapFactory.decodeStream(profilePicUrl.openConnection().getInputStream());
Run Code Online (Sandbox Code Playgroud)
该文档指定了以下用于检索封面照片.
用户的封面照片(必须使用fields = cover参数明确请求)
需要access_token
返回:字段数组id,source和offset_y
因此,JSON响应的结构将是这样的.
{
"cover": {
"cover_id": "10151008748223553",
"source": "http://sphotos-a.ak.fbcdn.net/hphotos-ak-ash4/s720x720/391237_10151008748223553_422785532_n.jpg",
"offset_y": 0
},
"id": "19292868552"
}
Run Code Online (Sandbox Code Playgroud)
我是Facebook Graph API的新手,因此对如何解决这个问题知之甚少.
我试过这个 coverPicUrl = new URL("http://graph.facebook.com/" + userId + "/cover?type=large");
还有这个 coverPicUrl = new URL("http://graph.facebook.com/" + userId + "/fields=cover");
但我无法获得用户个人资料的封面图片.
在线搜索也没有取得任何丰硕成果.
任何帮助确实会受到赞赏.
谢谢!
"source"标记(JSONObject)嵌套在另一个JSONObject("cover"标记)中.要解析此结果,您必须使用以下内容:
JSONObject JOSource = JOCover.optJSONObject("cover");
String coverPhoto = JOSource.getString("source");
Run Code Online (Sandbox Code Playgroud)
在JOCover本例中使用假定你已经有了一个JSONOBject (JOCover)解析的根.您可以替换自己JSONObject的位置.
无法直接访问"source"标记,因为它嵌套在"cover"标记中.你必须使用" .optJSONObject("cover")".我见过人们用.getString而不是用,.optJSONObject但我从来没用过它.选择适合你的方法.
编辑
根据您对使用Graph API的解决方案的要求,我正在编辑早期的解决方案并将其替换为Graph API解决方案.
优选地,在a中AsyncTask,使用以下代码doInBackground:
String URL = "https://graph.facebook.com/" + THE_USER_ID + "?fields=cover&access_token=" + Utility.mFacebook.getAccessToken();
String finalCoverPhoto;
try {
HttpClient hc = new DefaultHttpClient();
HttpGet get = new HttpGet(URL);
HttpResponse rp = hc.execute(get);
if (rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String result = EntityUtils.toString(rp.getEntity());
JSONObject JODetails = new JSONObject(result);
if (JODetails.has("cover")) {
String getInitialCover = JODetails.getString("cover");
if (getInitialCover.equals("null")) {
finalCoverPhoto = null;
} else {
JSONObject JOCover = JODetails.optJSONObject("cover");
if (JOCover.has("source")) {
finalCoverPhoto = JOCover.getString("source");
} else {
finalCoverPhoto = null;
}
}
} else {
finalCoverPhoto = null;
}
} catch (Exception e) {
// TODO: handle exception
}
Run Code Online (Sandbox Code Playgroud)
我已经测试了这个解决方案并且完美地工 您必须添加fields活动所需的基本URL的任何添加内容.为了测试,我只使用了fields=cover
并在onPostExecute,你做的事情显示封面图片.希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
12384 次 |
| 最近记录: |