Yas*_* T. 4 objective-c facebook-graph-api ios facebook-ios-sdk
出于某种原因,Facebook停止在用户JSON中返回用户电子邮件,我在成功验证用户后回来了.
我甚至将FacebookSDK for iOS从v3.6升级到v3.8而没有任何运气.直到几周前一切正常,但现在还没有.它只是电子邮件,所有其他属性,即DOB回来就好了.Facebook不断改变他们的权限系统,但我不知道最近可能导致这种情况的变化.任何指针都将非常感激.
顺便说一句,我正在尝试使用我自己的FB帐户进行身份验证,该帐户有一个与之关联的有效电子邮件,我最近也没有更改任何隐私设置.
还尝试从我的Facebook隐私设置中删除该应用程序并重新授权但仍然没有运气.这是代码:
[FBSession openActiveSessionWithReadPermissions:@[@"user_about_me", @"user_location", @"user_birthday", @"email"] allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
switch (status) {
case FBSessionStateOpen: {
[[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
NSLog(@"User Data: %@", user); //no email in the json
NSString *email = user[@"email"]; //obviously returns nil
//rest of the code
}];
}
break;
case FBSessionStateClosed:
case FBSessionStateClosedLoginFailed:
[FBSession.activeSession closeAndClearTokenInformation];
break;
default:
break;
}
}];
Run Code Online (Sandbox Code Playgroud)
Facebook App权限页面的屏幕截图,清楚地显示我已正确配置它:

这是我在API回调中返回的用户JSON(我删除了我的个人信息).
{
bio = "My Bio";
birthday = "01/01/1900";
"first_name" = FN;
gender = male;
id = 00000000;
"last_name" = LN;
link = "https://www.facebook.com/FBName";
locale = "en";
location = {
id = 11111111111111111;
name = "City Name";
};
name = "FN LN";
quotes = "";
timezone = "0";
"updated_time" = "2000-00-07T00:00:21+0000";
username = USERNAME;
verified = 1;
}
Run Code Online (Sandbox Code Playgroud)
事实证明,如果与该Facebook帐户关联的主电子邮件已被停用,禁用或删除,则当您拨打图表时,Facebook不会返回用户电子邮件.
如果您长时间不访问您的电子邮件地址,可能会发生这种情况.Facebook可能会在他们发往您主要地址的电子邮件开始反弹时将其弄清楚.
让它再次运作的步骤:
请确保您能够登录到您的电子邮件帐户,并且Facebook电子邮件不会被退回.
登录Facebook并将您的主电子邮件地址更改为其他电子邮件地址.
Facebook将向您的新电子邮件地址发送验证电子邮件,打开此电子邮件并单击验证链接.
重新登录Facebook并将主电子邮件再次更改为之前的电子邮件地址.
Facebook将向此电子邮件地址发送验证邮件,请打开并单击它以验证您的电子邮件.
等待几个小时再试一次中提琴,你的电子邮件将开始在json中.
| 归档时间: |
|
| 查看次数: |
1877 次 |
| 最近记录: |