【发布时间】:2020-09-11 19:04:01
【问题描述】:
我正在获取用户的朋友列表,他们都在使用带有 Facebook 登录功能的应用程序。在 "user_freinds" 请求的 GraphAPI 中,我请求用户的 ID、电子邮件和姓名。但是 API 不会返回用户的电子邮件。仅返回用户的名称和 ID。请检查下面的代码。
func getFacebookFriends() {
if AccessToken.current != nil {
let fbUserID = AccessToken.current?.userId ?? ""
let friendsPath = "/\(fbUserID)/friends"
let params = ["fields": "id, name, email"]
let fbFriendsRequest = GraphRequest(graphPath: friendsPath, parameters: params, httpMethod: .GET)
fbFriendsRequest.start { (_, result) in
switch result {
case .success(let response):
print(response.dictionaryValue as Any)
let responseDict = response.dictionaryValue!
let data = responseDict["data"] as! [[String:Any]]
if data.count != 0 {
// Sync the list with API
} else {
// Show error
}
case .failed(let error):
// Show error
}
}
}
}
这里有什么我遗漏的吗?
另外请注意,我使用的是 Facebook 的测试用户,由 Facebook 的开发者门户创建。好友只能通过开发者门户添加和授权。
【问题讨论】:
-
这些朋友中的每一个都需要为您的应用授予
email权限,否则您将无法访问它。 -
@CBroe 这些权限是通过开发者门户授予所有测试用户的。
-
如果您只是使用他们自己的访问令牌请求测试用户的详细信息,那么您可以获得电子邮件?
-
是的。对同一测试用户使用带有 Facebook 功能的登录功能,我收到了该用户的电子邮件。但在上述情况下没有收到电子邮件。
-
可能无法使用其他用户的访问令牌请求此字段。
标签: ios swift facebook facebook-graph-api facebook-ios-sdk