我正在尝试使用Facebook ID来在我的应用中共享数据。
问题是,我的应用程序使用一组用户选择的朋友ID将图像发布到云端。这意味着发布基于应用程序的唯一身份证。因此,当我访问朋友帐户并尝试从云中删除包含该用户ID的所有帖子时,我使用上面1中的用户ID。由于这与朋友列表中唯一生成的id不匹配,因此我无法查询数据。
有关如何克服我获取我的Facebookid但只获取我的朋友应用程序的独特Facebook ID的任何想法?是否有可能获得我的应用程序唯一的Facebook ID?如果是这样,那么我会用它发布到云端,所以当我的朋友得到我的id时,它就匹配了。
更新1代码
这会获取我的朋友ID,作为应用范围ID ...返回ID大约为80个字符,与开发者信息中心上的测试用户的用户ID不匹配。
func returnFriends() {
var request = FBSDKGraphRequest(graphPath:"/me/taggable_friends", parameters: ["fields":"user_id,first_name,last_name,name,picture.type(large)"]);
request.startWithCompletionHandler ({ (connection : FBSDKGraphRequestConnection!, result : AnyObject!, error : NSError!) -> Void in
if error == nil {
print("Friends are : \(result)")
let jsonResult = result
self.friendsArray = jsonResult["data"] as! NSArray
var index = 0
for data in self.friendsArray {
let fn = data["first_name"]! as! String
let ln = data["last_name"]! as! String
let id = data["id"]! as! String
let picture = data["picture"] as! NSDictionary
let parsePic = picture["data"] as! NSDictionary
let url = parsePic["url"] as! String
self.friendProfile .updateValue((fn + " " + ln), forKey: id)
self.friendProfilePic .updateValue(url, forKey: id)
self.friendProfileID .updateValue(id, forKey: index)
index++
}
self.tableView.reloadData()
} else {
print("Error Getting Friends \(error)");
}
})
}
然后,下面是获取我的ID,最终成为用户ID,并在开发仪表板上匹配我的测试用户大约15个数字。
func returnUserData() {
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me/user_id", parameters: ["fields":"id,age_range,first_name,last_name,gender,name,picture.type(large)"])
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if ((error) != nil) {
// Process error
print("Error: \(error)")
} else {
print("fetched user: \(result)")
let fn = result.valueForKey("first_name") as! String
let ln = result.valueForKey("last_name") as! String
let name = "\(fn) \(ln)"
self.usernameLabel.text = name
guard let id: String = result.valueForKey("id") as? String else { print("ID is null")
return }
print("ID is: \(id)")
self.returnUserProfileImage(id)
self.defaults.setObject(name, forKey: self.fbNameKey)
self.defaults.setObject(id, forKey: self.fbIDKey)
}
})
}
更新代码的结果
这是我的测试用户登录返回信息:该ID与仪表板中的Facebook开发人员测试用户ID匹配。
fetched user: {
"age_range" = {
min = 21;
};
"first_name" = Mike;
gender = male;
id = 109240712780413;
"last_name" = Alisonsky;
name = "Mike Alajhcdecfgba Alisonsky";
picture = {
data = {
"is_silhouette" = 1;
url = "https://scontent.xx.fbcdn.net/hprofile-xfa1/v/t1.0-1/s200x200/10354686_10150004552801856_220367501106153455_n.jpg?oh=2b8a15c932ebadfbd54c4576559bc9a6&oe=570FF350";
};
};
}
ID is: 109240712780413
这就是从我回来的时候开始的。
Friends are : {
data = (
{
"first_name" = Joe;
id = "AaKcjMZP1bX72NUURIgWYoZxoV_5yy9NX3WWpfWlUBEXRtoSOSNBOER_43DfxLKQhIDUPhilv67FGCAgjOQlh13NdpqA1o6hSH2_u-7pEM71gg";
"last_name" = Warmanson;
name = "Joe Alajgejijfdab Warmanson";
picture = {
data = {
"is_silhouette" = 1;
url = "https://scontent.xx.fbcdn.net/hprofile-xfa1/v/t1.0-1/s200x200/10354686_10150004552801856_220367501106153455_n.jpg?oh=2b8a15c932ebadfbd54c4576559bc9a6&oe=570FF350";
};
};
},
此处的ID与我在Facebook开发者信息中心中为此朋友提供的测试用户不匹配。
编辑2为什么
我希望用户能够选择Facebook好友发送照片。所以我在想,将照片发布到cloudkit,与我上面的代码获得的朋友ID。(朋友ID将是abdhAbfhd样式)然后我希望该朋友查询cloudkit来下载该照片。我能想到的唯一方法是使用朋友ID。但是为了让那位朋友有能力下拉他们需要我发布到云端的同一个。我假设的是app范围。有了以上。当我要求我的用户ID时,我得到的ID,在数据库中查询我的照片是100 ...一个。我需要一个我的朋友发布的一个类似于aabdcktishf ....
答案 0 :(得分:0)
所有,经过Facebook开发者论坛的讨论后发现,虽然回复了我所有的朋友,但他们并没有返回他们的id,而是返回了一个标签。哪个可以改变,因此不如标识符。我需要查询的是我/朋友vs taggable-friends。朋友将返回已授权我的应用的朋友,因此返回这些用户的范围ID。
因此,当我询问我时,我所获得的ID是我可以用来查询的范围ID,当我得到朋友ID时,他们应该匹配Facebook信息中心中使用的ID。
因此,我误解了使用taggable-friends和朋友。