个性化阅读
专注于IT技术分析

Firebase:Facebook登录身份验证

点击下载

在本节中, 我们将讨论Firebase最流行的身份验证方法, 即Facebook。 Facebook登录身份验证非常典型地实现。通过将Facebook登录集成到我们的应用程序中, 用户可以使用其Facebook帐户向Firebase进行身份验证。

因此, 让我们看一下一步一步实现Facebook登录身份验证的步骤。

步骤1:

第一步, 我们将创建一个Android和Firebase项目, 然后将Firebase项目添加到我们的应用程序中。另外, 在Firebase控制台中添加SHA-1和SHA-256密钥。之后, 在’app.build.gradle’文件中添加所有必需的依赖项, 即firebase-core, firebase-auth和插件, 并在’build.gradle’文件中添加classpath。

我们还将在“ app.build.gradle”文件中添加Facebook登录依赖项。

第2步:

下一步, 我们必须在“开发人员Facebook”网站上创建一个应用程序。为了创建一个请求, 我们应该有一个Facebook帐户。使用Facebook帐户登录。然后, 在以下链接的帮助下访问Facebook开发人员站点:

https://developers.facebook.com/

Firebase:Facebook登录身份验证

登录我们的开发人员帐户后, 我们将点击“文档”以转到文档页面。

Firebase:Facebook登录身份验证

第三步:

在文档页面中, 我们将向下滚动并单击Facebook登录。在Facebook登录页面上, 我们将选择Android从此处移动一个android页面, 我们将选择一个应用程序或创建一个新应用程序。

Firebase:Facebook登录身份验证
Firebase:Facebook登录身份验证

如果我们不是开发人员, 则必须单击“注册”以注册为开发人员。

Firebase:Facebook登录身份验证

单击下一步以注册为Facebook开发人员。

Firebase:Facebook登录身份验证

单击下一步后, 将显示一个新屏幕, 从中可以选择开发人员选项。

Firebase:Facebook登录身份验证

选择开发人员后, 将打开欢迎页面。

Firebase:Facebook登录身份验证

从欢迎页面中, 选择“创建第一个应用程序”, 并为其指定显示名称和联系电子邮件, 然后单击“创建应用程序ID”。

Firebase:Facebook登录身份验证

执行安全检查。

Firebase:Facebook登录身份验证
Firebase:Facebook登录身份验证

现在, 转到“首页”->“文档”->“ facebook登录”->“ android”, 然后选择我们之前创建的应用, 并复制该应用ID。

Firebase:Facebook登录身份验证

步骤4:

在下一步中, 我们将移至Android Studio的“ string.xml”文件并创建两个字符串, 即facebook_app_id和fb_login_protocol_scheme。对于facebook_app_id, 我们将粘贴之前复制的应用程序ID;对于fb_login_protocol_scheme, 我们将在我们的app_id中添加前缀FB并将其用作协议字符串。

Firebase:Facebook登录身份验证

步骤5:

我们还需要将Internet权限添加到我们的Android Manifest文件中。

Firebase:Facebook登录身份验证

步骤6:

在下一步中, 我们将添加元数据。为此, 我们将转到Facebook开发人员站点并复制步骤5的代码。

Firebase:Facebook登录身份验证

复制代码后, 我们将其粘贴到MainActivity代码之后的Manifest文件中。

Firebase:Facebook登录身份验证

步骤7:

现在, 我们将包名称和默认类与我们的应用程序关联。因此, 我们将在开发人员站点中添加包名称和默认活动类名称。

Firebase:Facebook登录身份验证

步骤8:

在下一步中, 我们将为我们的应用添加开发密钥哈希。为此, 我们需要openssl开放库。如果我们没有此库, 那么我们首先必须下载openssl库。之后, 我们将在命令提示符下执行以下命令:

keytool -export cert -alias androiddebugkey - Keystore "C:\Users\USERNAME\.android\debug.keystore" | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" sha1 -binary | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" base64
Firebase:Facebook登录身份验证

我们将复制此密钥并将其粘贴到开发人员站点的“密钥哈希”中。

Firebase:Facebook登录身份验证

步骤9:

下一步, 我们必须在Facebook开发人员网站中为我们的应用启用单点登录。

Firebase:Facebook登录身份验证

步骤10:

下一步, 我们将在facebook开发人员站点中转到应用程序的基本设置。从这里, 我们必须复制将在Firebase控制台中使用的App Secret。

Firebase:Facebook登录身份验证

步骤11:

我们已从Facebook开发人员网站复制的App Secret将粘贴在firebase控制台中。当我们启用Facebook登录方法时, 它将要求输入App ID和App Secret并提供OAuth重定向URL, 该URL将被添加到Facebook开发者网站上的应用程序中。

Firebase:Facebook登录身份验证

现在, 我们将转到Facebook设置页面。在这里, 我们将OAuth重定向URL添加到Facebook登录设置。

Firebase:Facebook登录身份验证

步骤12:

在下一步中, 我们将通过SDK创建一个Facebook登录按钮。它是一个UI元素, 包装了登录管理器中可用的功能。

Firebase:Facebook登录身份验证

步骤13:

在下一步中, 我们将修改MainActivity.java文件, 以通过以下方式使用Facebook执行身份验证:

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "FacebookLogin";
    private static final int RC_SIGN_IN = 12345;

    private CallbackManager mCallbackManager;

    private FirebaseAuth mAuth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Initialize Firebase Auth
        mAuth = FirebaseAuth.getInstance();

        // Initialize Facebook Login button
        mCallbackManager = CallbackManager.Factory.create();

        LoginButton loginButton = findViewById(R.id.login_button);

        loginButton.setReadPermissions("email", "public_profile");
        loginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                Log.d(TAG, "facebook:onSuccess:" + loginResult);
                handleFacebookAccessToken(loginResult.getAccessToken());
            }

            @Override
            public void onCancel() {
                Log.d(TAG, "facebook:onCancel");
            }

            @Override
            public void onError(FacebookException error) {

            }

        });
    }

    @Override
    public void onStart() {
        super.onStart();

        // Checking if the user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();

        if (currentUser != null) {
            Log.d(TAG, "Currently Signed in: " + currentUser.getEmail());
            Toast.makeText(MainActivity.this, "Currently Logged in: " + currentUser.getEmail(), Toast.LENGTH_LONG).show();
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        // The activity result pass back to the Facebook SDK
        mCallbackManager.onActivityResult(requestCode, resultCode, data);
    }

    private void handleFacebookAccessToken(AccessToken token) {
        Log.d(TAG, "handleFacebookAccessToken:" + token);

        AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());

        mAuth.signInWithCredential(credential)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            // Sign in success, UI will update with the signed-in user's information
                            Log.d(TAG, "signInWithCredential:success");
                            FirebaseUser user = mAuth.getCurrentUser();
                            Toast.makeText(MainActivity.this, "Authentication Succeeded.", Toast.LENGTH_SHORT).show();
                        } else {
                            // If sign-in fails, a message will display to the user.
                            Log.w(TAG, "signInWithCredential:failure", task.getException());
                            Toast.makeText(MainActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show();
                        }
                    }
                });
    }
}

输出:

Firebase:Facebook登录身份验证
Firebase:Facebook登录身份验证
Firebase:Facebook登录身份验证

赞(0)
未经允许不得转载:srcmini » Firebase:Facebook登录身份验证

评论 抢沙发

评论前必须登录!