Ios 如何使用Facebook ID在应用程序内共享数据?
我正在尝试使用Facebook id在我的应用程序中共享数据 简单计划:获取用户Facebook ID my ID。如果成功,我将获取与仪表板中的测试用户ID匹配的TestUser ID。 然后,我得到用户的朋友和他们的ID,允许用户从自定义的tableview中选择朋友。然而,对于字段:id,Facebook图形查询返回唯一的基于应用程序的id。这意味着它们与仪表板中的测试用户朋友id不匹配。 问题是,我的应用程序向云端发布了一张图像,其中包含一组用户选择的好友ID。这意味着将发布基于应用程序的唯一id。因此,当我转到朋友帐户并尝试从云中删除包含该用户id的所有帖子时,我使用的是上面1中的用户id。因为这与从好友列表中生成的唯一id不匹配,所以我无法查询数据 有没有想过如何克服我只获得Facebookid而只获得好友应用程序唯一的Facebook ID的问题?是否可以获取我的应用程序唯一的Facebook ID?如果是这样的话,我会把它发布到云上,这样当我的朋友得到我的id时,它就会匹配 更新1代码 这将获取作为应用程序范围ID的我的朋友ID。。返回ID大约有80个字符长,与开发人员仪表板上测试用户的用户ID不匹配Ios 如何使用Facebook ID在应用程序内共享数据?,ios,swift,facebook,Ios,Swift,Facebook,我正在尝试使用Facebook id在我的应用程序中共享数据 简单计划:获取用户Facebook ID my ID。如果成功,我将获取与仪表板中的测试用户ID匹配的TestUser ID。 然后,我得到用户的朋友和他们的ID,允许用户从自定义的tableview中选择朋友。然而,对于字段:id,Facebook图形查询返回唯一的基于应用程序的id。这意味着它们与仪表板中的测试用户朋友id不匹配。 问题是,我的应用程序向云端发布了一张图像,其中包含一组用户选择的好友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)");
}
})
}
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
然后,下面是我的ID,它最终是用户ID,与develop dashboard上的测试用户匹配,大约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)
}
})
}
更新代码的2个结果
这是我的测试用户登录返回的信息:ID与仪表板中的Facebook开发者测试用户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)");
}
})
}
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开发者仪表板中为这位朋友提供的测试用户不匹配
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)");
}
})
}
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
编辑2为什么
我希望用户能够选择一个Facebook朋友发送照片了。所以我在想,把照片贴到cloudkit上,用上面代码得到的朋友Id。朋友Id应该是abdhAbfhd样式的,然后我想让那个朋友查询cloudkit来下拉照片。我能想到的唯一方法是使用好友id。但是为了让那个朋友有这个id,他们需要和我在云上发布的相同的id。我假设它是应用程序范围的。有了以上。当我询问我的用户Id,以查询数据库中我的照片时,我得到的Id是100。。。一我需要一个,我的朋友张贴将类似于aabdcktishf 总之,在Facebook开发者论坛上讨论后发现,虽然返回了我所有的朋友,但并没有返回他们的id,而是返回了一个标签。它可能会发生变化,因此不能作为标识符。我需要查询的是我/朋友与可标记的朋友。好友将返回已授权我的应用程序的好友,并因此返回这些用户的作用域id 因此,当我查询我时,我从中获得的id是我可以用来查询的范围id,当我获得朋友id时,他们应该与Facebook仪表板中使用的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)");
}
})
}
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
因此,我对使用可标记的好友与仅使用好友存在误解。您能提供一些代码来展示您的尝试吗?您到底想实现什么?为什么要发布用户的ID?为何你真的想标记用户吗?@luschn更新了上述原因的答案