在本节中, 我们将讨论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/
文章图片
登录我们的开发人员帐户后, 我们将点击“文档”以转到文档页面。
文章图片
第三步:
在文档页面中, 我们将向下滚动并单击Facebook登录。在Facebook登录页面上, 我们将选择Android从此处移动一个android页面, 我们将选择一个应用程序或创建一个新应用程序。
文章图片
文章图片
如果我们不是开发人员, 则必须单击“注册”以注册为开发人员。
文章图片
单击下一步以注册为Facebook开发人员。
文章图片
单击下一步后, 将显示一个新屏幕, 从中可以选择开发人员选项。
文章图片
选择开发人员后, 将打开欢迎页面。
文章图片
从欢迎页面中, 选择“创建第一个应用程序”, 并为其指定显示名称和联系电子邮件, 然后单击“创建应用程序ID”。
文章图片
执行安全检查。
文章图片
文章图片
现在, 转到“首页”-> “文档”-> “ facebook登录”-> “ android”, 然后选择我们之前创建的应用, 并复制该应用ID。
文章图片
步骤4:
在下一步中, 我们将移至Android Studio的“ string.xml”文件并创建两个字符串, 即facebook_app_id和fb_login_protocol_scheme。对于facebook_app_id, 我们将粘贴之前复制的应用程序ID;对于fb_login_protocol_scheme, 我们将在我们的app_id中添加前缀FB并将其用作协议字符串。
文章图片
步骤5:
我们还需要将Internet权限添加到我们的Android Manifest文件中。
文章图片
步骤6:
在下一步中, 我们将添加元数据。为此, 我们将转到Facebook开发人员站点并复制步骤5的代码。
文章图片
复制代码后, 我们将其粘贴到MainActivity代码之后的Manifest文件中。
文章图片
步骤7:
现在, 我们将包名称和默认类与我们的应用程序关联。因此, 我们将在开发人员站点中添加包名称和默认活动类名称。
文章图片
步骤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
文章图片
我们将复制此密钥并将其粘贴到开发人员站点的“密钥哈希”中。
文章图片
步骤9:
下一步, 我们必须在Facebook开发人员网站中为我们的应用启用单点登录。
文章图片
步骤10:
下一步, 我们将在facebook开发人员站点中转到应用程序的基本设置。从这里, 我们必须复制将在Firebase控制台中使用的App Secret。
文章图片
步骤11:
我们已从Facebook开发人员网站复制的App Secret将粘贴在firebase控制台中。当我们启用Facebook登录方法时, 它将要求输入App ID和App Secret并提供OAuth重定向URL, 该URL将被添加到Facebook开发者网站上的应用程序中。
文章图片
现在, 我们将转到Facebook设置页面。在这里, 我们将OAuth重定向URL添加到Facebook登录设置。
文章图片
步骤12:
在下一步中, 我们将通过SDK创建一个Facebook登录按钮。它是一个UI元素, 包装了登录管理器中可用的功能。
文章图片
步骤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使用电话号码登录身份验证
- Firebase(Google登录身份验证)
- Firebase身份验证详解
- Firebase Assistance用法详解
- Android Studio安装和使用详细步骤
- Firebase的功能
- Firebase介绍
- Firebase教程介绍
- 将Firebase添加到App