我目前正在努力将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);
}然后我将图片绘制为位图,并进一步处理它们。这与我的问题无关,我只是想不出如何从user (本例中为response object)对象获取“is_silhouette”属性。
我试着访问这个属性
response[i].picture.is_silhouette但这似乎没有定义,但当我尝试访问用户名id...etc时。这样,它的工作方式如下所示:
response[i].id以此类推。
我的问题是,如何在此构造中访问picture.is_silhouette属性?
发布于 2013-05-01 01:17:36
尝试将图片方法更改为api方法,并调用“getImageUrl _ id /api”,其中"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(responsei.id,...)方法的响应的一部分。
我相信你会有更好的运气使用这个脸书记录的方法:(https://developers.facebook.com/docs/reference/api/#pictures)
将来,我将通过输出"response“对象来处理测试。这将向你展示你得到的一切。在本例中,"response“来自/me/friends/,并且没有对"pictures”对象的引用。
最后,在Graph API Explorer中测试Graph API调用很有帮助:https://developers.facebook.com/tools/explorer
https://stackoverflow.com/questions/16305341
复制相似问题