ios - 无法在 google firebase 中存储 facebook 用户数据

标签 ios firebase firebase-authentication

我正在将我的应用程序与 Facebook 和 Google Firebase 连接起来。我遵循了所有步骤并且一切正常,但在 Firebase Google 中生成的数据库是空的。我是否需要使用实时数据库,然后以编程方式存储 FB 用户数据?或 FB 用户信息在您登录时自动存储在 Firebase 数据库中。以供引用: https://firebase.google.com/docs/auth/ios/facebook-login

-(void)loginButton:(FBSDKLoginButton *)loginButton didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result error:(NSError *)error
{

    if (error == nil) {

        FIRAuthCredential *credential = [FIRFacebookAuthProvider
                                         credentialWithAccessToken:[FBSDKAccessToken currentAccessToken]
                                         .tokenString];

        [[FIRAuth auth] signInWithCredential:credential
                                  completion:^(FIRUser *user, NSError *error) {
                                      // ...
                                  }];
    } else {

        NSLog(@"%@", error.localizedDescription);
    }

}
- (IBAction)FBLogin:(id)sender {

    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];

    [login
     logInWithReadPermissions: @[@"public_profile", @"email", @"user_friends",@"user_birthday",@"user_location"]
     fromViewController:self

     handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
         if (error) {
             NSLog(@"Process error");
         } else if (result.isCancelled) {
             NSLog(@"Cancelled");
         } else {
             NSLog(@"Logged in");
             [self performSegueWithIdentifier:@"GotoMainMenu" sender:self];
         }
     }];
}

最佳答案

...抱歉,我刚刚编辑了这个,因为我意识到您没有使用 JavaScript。我会留下答案,因为它可能仍然有帮助。

等到您进入基于密码的身份验证。这就是真正的乐趣开始的地方! :-)

关于 Facebook 的事情是他们默认不给你用户的电子邮件。我相信您可以通过他们的开发人员门户请求访问它。其他提供商确实提供电子邮件。

在存储 displayName、photoURL 和/或电子邮件方面,您确实将它们存储在 Auth 系统中,并且该系统将记住数据服务器端,...用于密码帐户。 oAuth 帐户在登录时提取此数据,因此它不会过时。

我有一个可用的 Web 身份验证样板文件,可以让您抢先一步。它位于 https://github.com/rhroyston/firebase-auth .

以下是如何一次完成基于密码的用户。

  function registerPasswordUser(email,displayName,password,photoURL){
    var user = null;
    //NULLIFY EMPTY ARGUMENTS
    for (var i = 0; i < arguments.length; i++) {
      arguments[i] = arguments[i] ? arguments[i] : null;
    }
    auth.createUserWithEmailAndPassword(email, password)
    .then(function () {
      user = auth.currentUser;
      user.sendEmailVerification();
    })
    .then(function () {
      user.updateProfile({
        displayName: displayName,
        photoURL: photoURL
      });
    })
    .catch(function(error) {
      console.log(error.message,7000);
    });
    console.log('Validation link was sent to ' + email + '.');
  }

关于ios - 无法在 google firebase 中存储 facebook 用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38770579/

相关文章:

ios - Xcode 12 : iOS 14 Widget all black in simulator. 如何修复?

ios - UITableViewController 针对 "Messenger App"类函数的滚动优化

ios - PHAssetResource.assetResources 使用有效的 PHAsset 返回零结果

javascript - 如何向公众隐藏 HTML/CSS 以及最重要的 app.js(Firebase 代码)?

iphone - 在特定时间 x 天后创建 NSDate

ios - 如何使用 FIRebase 将带有对象的字典追加到数组中

node.js - 管理员 Firebase 错误 : "admin.auth(...).generatePasswordResetLink is not a function"

firebase - firebase admin nodejs 权限错误需要 iam.serviceAccounts.signBlob

android - 区分 iOS 和 Android Firebase 身份验证用户

android - Firebase 控制台 : How to specify click_action for notifications