阅读 327

Android端开发集成Facebook登录

这是我参与新手入门的第1篇文章。 由于公司项目需求,需要集成Facebook三方登录功能,特此梳理记录一下相关流程。

一、Facebook开发者创建应用
  1. 输入如下网址developers.facebook.com/apps/ 进入Facebook开发者平台
  2. 登录开发者平台,然后点击“创建应用”

image.png

  1. 选择要创建的应用类型

image.png

4.然后输入应用名称,点击“创建应用”完成创建

image.png

5.点击左侧边栏的添加商品,或者直接点击如图右侧的Facebook登录“设置”按钮,即可添加Facebook登录功能

image.png

二、为Android平台配置Facebook登录

1.选择 快速启动->Android平台

image.png

2.无需下载FacebookSDK,直接进入第二步,在app的build.gradle中添加以下编译声明到dependencies{}部分,以便引入FacebookSDK,然后点击“继续”

implementation 'com.facebook.android:facebook-android-sdk:[8,9)'
复制代码

3.输入软件包名称和默认活动类名称,然后点击“Save”->“继续”

image.png

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
复制代码

image.png

5.根据需要选择是否启用单点登录,我这里是没有启用,然后点击“Save”->“继续”

image.png 6.编辑AndroidManifest清单,直接复制Facebook给生成的相应代码到strings.xml和AndroidManifest.xml文件中

image.png

至此,在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账号。

image.png

文章分类
Android
文章标签