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; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Initialize Firebase AuthmAuth = FirebaseAuth.getInstance(); // Initialize Facebook Login buttonmCallbackManager = CallbackManager.Factory.create(); LoginButton loginButton = findViewById(R.id.login_button); loginButton.setReadPermissions("email", "public_profile"); loginButton.registerCallback(mCallbackManager, new FacebookCallback< LoginResult> () {@Overridepublic void onSuccess(LoginResult loginResult) {Log.d(TAG, "facebook:onSuccess:" + loginResult); handleFacebookAccessToken(loginResult.getAccessToken()); }@Overridepublic void onCancel() {Log.d(TAG, "facebook:onCancel"); }@Overridepublic void onError(FacebookException error) {}}); }@Overridepublic 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(); }}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data); // The activity result pass back to the Facebook SDKmCallbackManager.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> () {@Overridepublic void onComplete(@NonNull Task< AuthResult> task) {if (task.isSuccessful()) {// Sign in success, UI will update with the signed-in user's informationLog.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登录身份验证)

文章图片
Firebase(Facebook登录身份验证)

文章图片

    推荐阅读