我目前正在将facebook集成到我的移动AS3游戏中。我正在下载朋友的照片,效果很好:
public function updateView(id:String, data:Object):void {
FacebookMobile.api("/me/friends/",getfellaz);
startLoading();
}
private function getfellaz(response:Object, fail:Object):void {
var a:int = response.length;
arr = new Array();
arr2 = new Array();
var tempArrIDs:Array = new Array
var k:int = 0
for (var i:int = 0; i< a; i++ ) {
arr.push(FacebookMobile.getImageUrl(response[i].id, 'large'));
tempArrIDs.push(response[i].id);
}
arrLength = arr.length-1;
for(var x:int = 0; x<12; x++) {
var r:int = dejMiTyRandomy();
randomUserPicArray.push(arr[r]);
randomUserPicArray.push(arr[r]);
uids.push(tempArrIDs[r]);
}
loadThatShit(0);
}
然后我将图片绘制到位图并与他们进一步合作......这与我的问题无关,我只是无法弄清楚如何从用户(在这种情况下为响应对象)对象中获取“is_silhouette”属性。 / p>
我试图访问此属性
response[i].picture.is_silhouette
但这显然是未定义的,但是当我尝试访问用户名,ID等时。这样,它就像这样工作:
response[i].id
依旧......
我的问题是,如何在此构造中访问picture.is_silhouette属性?
答案 0 :(得分:2)
尝试将getImageUrl
方法更改为api
方法,并调用“friend_id / picture”,其中“friend_id”是朋友的ID。 请确保附加“?redirect = false”以获取json响应。
这是与我的方法调用:
https://graph.facebook.com/20001655/picture?redirect=false
这是逻辑(完全书面/未经测试):
public var hasSilhouette:Boolean = false;
...
hasSilhouette = false;
checkHasImage(response[i].id)
if(hasSilhouette){
...
} else {
...
}
public function checkHasImage(user_id:int):void
{
FacebookMobile.api(user_id+"/picture", checkHasImageResponse);
}
public function checkhasImageResponse(result:Object, fail:Object):void
{
hasSilhouette = result.is_silhouette;
}
这将返回如下的JSON响应:
{
"data": {
"url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-frc1/somenumbers.jpg",
"is_silhouette": false
}
}
is_silhouette不是“FacebookMobile.getImageUrl(response [i] .id,...)”方法的响应的一部分。
我相信使用这个Facebook记录的方法会有更好的运气:(https://developers.facebook.com/docs/reference/api/#pictures)
将来,我会通过输出“响应”对象来处理测试。这将向您展示您所获得的一切。在这种情况下,“响应”来自 / me / friends / ,并且没有对“图片”对象的引用。
最后,在Graph API Explorer中测试Graph API调用很有帮助:https://developers.facebook.com/tools/explorer