【问题标题】:Cant get FBGraphUser email无法获取 FB Graph 用户电子邮件
【发布时间】:2014-04-20 13:31:52
【问题描述】:

我在我的应用中使用 Facebook 登录。 (Facebook iOS SDK 版本 3.11.1)

我请求“电子邮件”权限:

NSArray *permissions = [NSArray arrayWithObjects: @"basic_info", @"email", nil];

大多数时候,我确实会收到这样的用户电子邮件:

NSString *email = [user objectForKey:@"email"];
//user is (NSDictionary<FBGraphUser> *)

有时我只是不这样做。 (我可以看到 NSDictionary 不包括电子邮件)。

我正在使用此修复程序,因此当我稍后使用电子邮件时应用程序不会终止,并且它为零:

NSString *email = [user objectForKey:@"email"] ? [user objectForKey:@"email"] : @"NO_EMAIL";

但我需要真正的邮件,所以我必须想出一个新的解决方案。 我没有注意到有问题的用户有什么特别之处。 任何想法可能是什么问题?

【问题讨论】:

标签: ios objective-c facebook facebook-graph-api


【解决方案1】:

这似乎是一个众所周知的问题...由于多种原因,并非 Facebook 上的每个人都注册了电子邮件地址。

但正如我所说,我的问题是我需要一个真正的邮件。 所以最简单的解决方案是使用用户的 Facebook 邮箱:user_name@facebook.com

NSString *email = [user objectForKey:@"email"] ? [user objectForKey:@"email"] : [NSString stringWithFormat:@"%@@facebook.com", user.username];
  • 一些链接表示您无法将 HTML 电子邮件发送到 Facebook 邮件,只能发送纯文本!

【讨论】:

  • 如果user.username也是nil怎么办?
【解决方案2】:

这是我的做法,它在任何情况下都对我很有效: (我想你已经在代码中添加了电子邮件权限)

第一步

打开Xcode 中的Facebook Framework 文件夹并找到FBGraphUser.h

如您所见,您拥有从 Facebook 框架 使用的所有属性,用于获取用户详细信息,因此在此处添加其他属性(复制并粘贴以下代码):

步骤 2

 @property (retain, nonatomic) id<FBGraphUser> email;

你很高兴!

【讨论】:

  • 准备好了吗?在哪里 ???你读过我的问题吗? 我需要一个真实的电子邮件地址。添加该属性将防止在 NSDictionary 中没有电子邮件时可能发生的错误。 但是如果用户有一个与 Facebook 帐户相关联的电子邮件地址,或者他没有,我必须将他邮寄到 Facebook 电子邮件 (username@facebook.com)。
【解决方案3】:

你可以检查几件事:

  1. 确保您在登录请求对话框中请求电子邮件范围权限:

    https://www.facebook.com/dialog/oauth?client_id=APP&redirect_uri=REDIRECT&state=UNIQUE&scope=email

  2. 检查您获得的访问令牌是否实际上已通过Access Token Debugger 授予电子邮件权限

【讨论】:

  • 正如我所写,只有部分用户有这个问题。我要求电子邮件权限 (1.) 并且访问令牌具有根据访问令牌调试器 (2.) 的权限
【解决方案4】:

所有通过电话号码而不是电子邮件验证的 Facebook 帐户将获得 NULL for [user objectForKey:@"email"]

【讨论】:

    【解决方案5】:

    如果电子邮件地址未经验证,Facebook 将不会返回。

    https://developers.facebook.com/docs/graph-api/reference/v2.2/user

    此人的主要电子邮件地址列在其个人资料中。如果没有可用的有效电子邮件地址,则不会返回此字段。

    【讨论】:

      猜你喜欢
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      • 2018-08-17
      • 1970-01-01
      • 1970-01-01
      • 2015-11-07
      相关资源
      最近更新 更多