老婆保佑,代码无BUG
前言
最近公司的产品需要做国际化,这里记录一下,如何继承一次FB登录
1. 创建FB账户
facebook创建新的账户
屏幕快照 2019-01-02 下午8.59.36.png
2 注册开发者
屏幕快照 2019-01-02 下午9.04.02.png
注册成功以后 你会有第一个应用,当然后面你也可以添加多个应用,后面再介绍
然后找到下图所示 FB登录。
屏幕快照 2019-01-02 下午9.06.57.png
点击建立
屏幕快照 2019-01-02 下午10.54.15.png
找到Android
下图是所有的步骤,其实开发文档已经很详细了,我这里会在啰嗦几句,
屏幕快照 2019-01-02 下午10.57.39.png
3. 集成步骤(这里简要说明,具体的看文档)
(1)下载SDK
在 build.gradle(Project)中添加
mavenCentral ()
然后添加
implementation 'com.facebook.android:facebook-android-sdk:[4,5)'
这里我之前遇到坑了,是我开发环境的问题,但是没办法引入,我比较暴力,将MAC 上所有的AS环境全部删除,重新搭建一下,20分钟,在google 找了很多方法都没法子。。。无奈 eummmmm,至于如何删除MAC 上的AS 请找度娘,
(2)包名,和默认活动的Activity
屏幕快照 2019-01-02 下午11.03.25.png
包名,开发同学都知道,就不多说了,这个默认的Activity,有点意思,我用的是登录界面的Activity,后来好奇这里 改成其他Activity,依然也行,有知道的小伙伴,请@我,当然这里还是写你登录的Activity比较好
(3)密钥哈希
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
注意 上面两个都是开发的DEBUG 的 你还需需要一个release的密钥哈希,切记,
会得到例如这样的,哈哈
iLGKOXzrWf0i+iNudibv+zAM6mk=
(4)配置 复制的事情,
注意 还是那句官网复制,会直接把你的id 都给你带上,
在
/app/res/values/strings.xml
中添加
<string name="facebook_app_id">xx</string> <string name="fb_login_protocol_scheme">xxxx</string>
权限
<uses-permission android:name="android.permission.INTERNET"/>
清单文件配置
<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>
(5) 实际调用FB登录
在Application onCreate()
@Overridepublic void onCreate() { super.onCreate(); FacebookSdk.sdkInitialize(getApplicationContext()); AppEventsLogger.activateApp(this); }
eummm...这个要收费 果断不用
logger.logPurchase(BigDecimal.valueOf(4.32), Currency.getInstance("USD"));
屏幕快照 2019-01-02 下午11.17.29.png
Add the Facebook Login Button
<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" />
这里说一下,不一定非要使用这个LoginButton,我看了,不少国外的软件用的是这样式,当然如果你的产品经理用其他的样式,自己布局,这里可以不用这个view 知道这个事情就好了
在Activity /Fragment onCreate 的地方初始化
callbackManager = CallbackManager.Factory.create();
callbackManager = CallbackManager.Factory.create(); LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } });
onActivityResult回调
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { callbackManager.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data); }
当然如果你用了上面的XML
private static final String EMAIL = "email"; loginButton = (LoginButton) findViewById(R.id.login_button); loginButton.setReadPermissions(Arrays.asList(EMAIL)); // If you are using in a fragment, call loginButton.setFragment(this); // Callback registration loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } });
最后 调用登录
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));
当然到这里 你只能够使用开发者的账户登录FB 上线的话需要打开这个
屏幕快照 2019-01-03 上午9.07.51.png
作者:Allens_Jiang
链接:https://www.jianshu.com/p/3b0e2ae997cd
共同學習,寫下你的評論
評論加載中...
作者其他優質文章