这是我参与新手入门的第1篇文章。 由于公司项目需求,需要集成Facebook三方登录功能,特此梳理记录一下相关流程。
一、Facebook开发者创建应用
-
输入如下网址developers.facebook.com/apps/ 进入Facebook开发者平台
-
登录开发者平台,然后点击“创建应用”
-
选择要创建的应用类型
4.然后输入应用名称,点击“创建应用”完成创建
5.点击左侧边栏的添加商品,或者直接点击如图右侧的Facebook登录“设置”按钮,即可添加Facebook登录功能
二、为Android平台配置Facebook登录
1.选择 快速启动->Android平台
2.无需下载FacebookSDK,直接进入第二步,在app的build.gradle中添加以下编译声明到dependencies{}部分,以便引入FacebookSDK,然后点击“继续”
implementation 'com.facebook.android:facebook-android-sdk:[8,9)'
3.输入软件包名称和默认活动类名称,然后点击“Save”->“继续”
4.添加密钥散列,此处我是生成的开发密钥散列
生成开发密钥散列:
Mac OS
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Windows
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\USERNAME\.android\debug.keystore" | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" sha1 -binary | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" base64
生成发布密钥散列:
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64
5.根据需要选择是否启用单点登录,我这里是没有启用,然后点击“Save”->“继续”
6.编辑AndroidManifest清单,直接复制Facebook给生成的相应代码到strings.xml和AndroidManifest.xml文件中
至此,在Facebook开发平台的操作已基本完成,下面开始在自己工程中添加相应代码以实现功能吧。
三、在工程中添加代码
1.注册回调,以监听返回的登录状态
private lateinit var callbackManager: CallbackManager
callbackManager = CallbackManager.Factory.create()
// Callback registration
LoginManager.getInstance().registerCallback(
callbackManager,
object : FacebookCallback<LoginResult?> {
override fun onSuccess(loginResult: LoginResult?) {
// App code
Timber.d("facebookLogin--onSuccess--")
}
override fun onCancel() {
// App code
Timber.d("facebookLogin--onCancel--")
}
override fun onError(exception: FacebookException) {
// App code
Timber.d("facebookLogin--onError--exception:%s", exception.printStackTrace())
}
})
2.使用Facebook提供的登录按钮或者自定义一个登录按钮
使用Facebook登录按钮
<com.facebook.login.widget.LoginButton
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:layout_marginBottom="30dp" />
自定义登录按钮,在点击事件中,添加如下代码调用登录功能
LoginManager.getInstance().logIn(
this,
null
)
3.在页面的onActivityResult中添加
callbackManager.onActivityResult(requestCode, resultCode, data);
4.根据需要,可以在APP启动页增加,Facebook登录状态的判断
LoginManager.getInstance()
.retrieveLoginStatus(
this,
object : LoginStatusCallback {
override fun onCompleted(accessToken: AccessToken) {
Timber.d("--checkFacebookStatus LoginStatusCallback--, onCompleted:")
}
override fun onFailure() {
// If MainActivity is reached without the user being logged in,
// redirect to the Login Activity
Timber.d("--LoginStatusCallback-- onFailure")
}
override fun onError(exception: Exception) {
// Handle exception
}
})
至此,Facebook登录就集成完毕了。可以开始测试验证了,需要注意的是在开发模式下如果需要用其他Facebook账号测试需要在用户身份里邀请相应的Facebook账号。