【问题标题】:Unable to get user's email ID in user_friends API of Facebook无法在 Facebook 的 user_friends API 中获取用户的电子邮件 ID
【发布时间】: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


【解决方案1】:
  1. 使用 Graph API Explorer 进行调试:https://developers.facebook.com/tools/explorer/
  2. 尝试获取权限:'GET/{user-id}/permissions'
  3. 尝试在此工具中获取好友列表和单独的用户信息
  4. 如果用户在隐私设置页面上隐藏电子邮件,则无法显示电子邮件

【讨论】:

    【解决方案2】:

    查看docs,您缺少需要添加的user_friends 权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      相关资源
      最近更新 更多