【问题标题】:FBSDKGraphRequest is not working (iOS)FBSDKGraphRequest 不工作 (iOS)
【发布时间】:2016-01-07 16:17:07
【问题描述】:

我正在尝试在按下 Facebook 登录按钮时执行的代码块中使用 FBSDKGraphRequest。但是,由于某种原因,这段代码永远不会执行。可能是什么原因。我使用的 Button 是 FBSDKLoginButton,它工作得很好。我只想在登录后检索用户信息,例如姓名和电子邮件。

[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"email,name"}]
                  startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
                      NSLog(@"test");
                      if (!error) {
                          NSLog(@"fetched user:%@  and Email : %@", result,result[@"email"]);
                      }
                  }];

【问题讨论】:

  • 请为您的问题添加更多代码,因为目前尚不清楚您打算如何运行上述代码,也不清楚您是否正确实现了FBSDKLoginButton

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


【解决方案1】:

默认参数是 id 和 name,如果用户公开信息,则查找电子邮件在 url 字段中附加电子邮件,也可以附加所需的权限,如生日等

if ([FBSDKAccessToken currentAccessToken]) {
        [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me?fields=id,name,email" parameters:nil]
         startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
             if (!error) {
                 NSLog(@"fetched user:%@", result);
             }
         }];
    }

结果由用户名、邮件和id组成。

然后去分析profile信息,如下代码,

[FBSDKProfile loadCurrentProfileWithCompletion:
     ^(FBSDKProfile *profile, NSError *error) {
         if (profile) {
             NSLog(@"Hello, %@!", profile);
         }
     }];

个人资料由用户ID、名字、中间名、姓氏、姓名、链接URL、刷新日期组成

【讨论】:

    【解决方案2】:

    我使用了自定义 Facebook 登录,而不是官方 Facebook FBSDKLoginButton。试试下面的代码。今天我为我的应用集成了 Facebook 登录,遇到了你的问题。

    - (IBAction)FacebookLogin:(id)sender {
        FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
        [login
         logInWithReadPermissions: @[@"public_profile", @"email", @"user_friends"]
         fromViewController:self
         handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
             if (error) {
                 NSLog(@"Process error");
             } else if (result.isCancelled) {
                 NSLog(@"Cancelled");
             } else {
                 NSLog(@"Logged in");
    
                 [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"email,name"}]
             startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
                 if (!error) {
                     NSLog(@"fetched user:%@  and Email : %@", result,result[@"email"]);
                 }
             }];
             }
         }];
    }
    

    【讨论】:

    • 完美工作
    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 2013-04-19
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多