FaceBook登录接入

xiaoxiao2021-02-28  190

###官方文档 Facebook登录接入Android官方文档 ###创建应用 首先去Facebook开发者平台注册一个开发者账户,这里需要翻墙,在后台添加一个自己的应用

###SDK集成 SDK的集成方式有两种

Maven方式在您的项目中,打开 your_app > Gradle Scripts > build.gradle (Project),确保下列存储库都添加到 buildscript { repositories {}} 中 jcenter() 在您的项目中,打开 your_app > Gradle Scripts > build.gradle (Module: app) 并将下列执行语句添加到 dependencies{} 部分,以便依赖于最新版的 Facebook 登录 SDK: implementation 'com.facebook.android:facebook-login:[4,5)' Jar导入方式 下载Facebook最新的SDK jar包放到项目的libs文件夹下。 SDK下载地址是:Facebook SDK下载地址

###编辑资源和清单

打开 /app/res/values/strings.xml 文件 <string name="facebook_app_id">15477621189....</string> <string name="fb_login_protocol_scheme">fb15477621189....</string> 打开 /app/manifest/AndroidManifest.xml 文件 添加权限 <uses-permission android:name="android.permission.INTERNET"/> 在 application 元素中添加以下 meta-data 元素以及相应的Activity <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> <activity android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" /> <activity android:name="com.facebook.CustomTabActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="@string/fb_login_protocol_scheme" /> </intent-filter> </activity>

###填入APP的包名 在Facebook控制后台填入即可

###为应用提供开发和发布秘钥散列 首先,需要三个工具:

keytool : JDK中默认已经有了windows openssl函数库keystore:debug.keystore 以及应用正式上线的keystore

其次,利用命令行cmd去生成调试以及正式的keystore秘钥散列, cmd渠道JDK的目录下,输入一下命令,注意调整自己的各种路径,debug.keystore的密码默认是没有的,直接回车就好

调试版秘钥散列 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

生成出来秘钥散列的是28个字符的字符串,类似于以下

QvoiWD1LQEfDIrvczaq31WCJZjX=

###SDK的API使用

SDK的初始化登录回调,在onCreate()中调用 callbackManager = CallbackManager.Factory.create(); LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { Log.e(TAG, "登录成功: " + loginResult.getAccessToken().getToken()); loginResult.getAccessToken().getApplicationId(); loginResult.getAccessToken().getUserId(); } @Override public void onCancel() { Log.e(TAG, "登录取消"); } @Override public void onError(FacebookException error) { Log.e(TAG, "登录错误"); } }); 在你需要调用登录的地方调用登录接口 LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile")); 在 onActivityResult 方法中调用 callbackManager.onActivityResult,通过 callbackManager 将登录结果传递至 LoginManager @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { callbackManager.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data); }

这样一个简单的Facebook登录客户端API已经完成了,如果需要服务端校验,各家的校验方式都不一样,可以参考访问口令

###应用测试

测试手机:需要翻墙 需要有google play服务,可以到各大应用商店下载:谷歌安装器google play商店下载Facebook app 将代买debug安装到手机运行测试

###注意事项

将自己的debug.keystore生成散列秘钥配置到Facebook控制后台,要不然debug出来的app安装到手机会不可用注意自己的申请参数正确配置到:/app/res/values/strings.xml中如果在Facebook控制后台配置了包名,请确保自己应用的包名和Facebook配置的一样

###常见问题

facebook onErrorSERVER_ERROR: [code] 1675030 [message]: 执行查询时出错。 [extra]:

解答:因为该Facebook 账号不是测试账号

转载请注明原文地址: https://www.6miu.com/read-2534743.html

最新回复(0)