1. 首页
  2. 最新文章

集成facebook登录接入

前言

这几天应公司需求,需要在项目中接入facebook的登录,如今闲下来后再次牢固一下!


预备工作

  1. 保证自己的网络已经翻墙,可以或许进入Facebook网页
  2. 预备一个FB的开发者账号,假如没有可以免费申请,附上 官方网址
流程

1、登录facebook后,点击左侧 “睁开”栏,

2、选择点击管理应用---添加新应用,创建新的应用,然后根据自己的需求选择相应的用途,根据他的要求填写就可以了。

3、创建完毕后,添加产品时选择Facebook登录

4、点击设置后,选择Android平台,然后根据FB的步骤完成。

这里详细演示下这些步骤 1、下载这里就不解说了 2、导入Facebook SDK 对应的在Android Studio中的是


对应的在Android Studio中的是 随后构建一下项目(点击上面锤子的icon按钮进行构建) 3、在FB上填写Android项目信息,填写完后要Save一下 4、添加密钥
这个根据文档去输入相应的下令就可以得到密钥了,不外有的设置了密码的就需要输入密钥密码才能得到密钥,然后在FB的文档中填入这个天生的密钥就可以了,也需要记得Save一下。
5、启用单点登录 这个单击启用单点登录,然后Save 6、根据Facebook上面的文档在AndroidStudio的相应位置添加代码 1、打开您的 /app/res/values/strings.xml 文件。
2、添加如下所示的代码:

<string name="facebook_app_id">应用编号</string> <string name="fb_login_protocol_scheme">fb+应用编号</string>

3、打开 /app/manifest/AndroidManifest.xml 文件。

4、在 application 元素后添加以下 uses-permission 元素:

<uses-permission android:name="android.permission.INTERNET"/>

5、在 application 元素中添加以下 meta-data 元素、一个针对 Facebook 的 activity 元素以及一个针对 Chrome 自定义选项卡的 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> 7、设置登录按钮 我这里是直接在项目中设置按钮登录 js代码 onClickLogin(){ jsb.reflection.callStaticMethod( "org/cocos2dx/javascript/AppActivity", "LoginFb", "()V" ); }

java代码

public static void LoginFb(){ LoginManager.getInstance().logInWithReadPermissions(sCocos2dxActivity, Arrays.asList( "public_profile" )); } 8、注册回调 在AppActivity的onCreate方法中添加以下代码 sCocos2dxActivity = this ; callbackManager = CallbackManager.Factory.create(); LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult> () { @Override public void onSuccess(LoginResult loginResult) { Toast.makeText(getApplicationContext(), "facebook登录成功" + loginResult.getAccessToken().getUserId(), Toast.LENGTH_SHORT).show(); final String Fid = loginResult.getAccessToken().getUserId(); Cocos2dxHelper.runOnGLThread( new Runnable() { @Override public void run() { Cocos2dxJavascriptJavaBridge.evalString( "window.FbLoginCallback("+Fid+");" ); } }); } @Override public void onCancel() { Toast.makeText(getApplicationContext(), "facebook登录用消" , Toast.LENGTH_SHORT).show(); } @Override public void onError(FacebookException error) { Toast.makeText(getApplicationContext(), "facebook登录错误" , Toast.LENGTH_SHORT).show(); } });

最后,在 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登录sdk

官方文档 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)' 编辑资源和清单
  • 打开 /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控制后台填入即可

    为应用提供开发和公布秘钥散列

    首先,需要三个工具:

    其次,使用下令行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网页

      一个FB开发者账号,如若没有可以免费申请,附上 官方网址 。

    流程

      点击我的应用-添加新应用,创建新的应用

    1. 点击快速入门,选择Android平台,然后根据FB的要求一步步走完即可。


    此中有一下几点需要留意:
  • 2.导入Facebook SDK 中,最好不要用
  • implementation 'com.facebook.android:facebook-android-sdk:[4,5)'

    而是改用

    implementation ("com.facebook.android:facebook-android-sdk:4.26.0") { exclude module: 'support-v4' }

    缘故有两点:1.是去掉FB sdk中的v4包防备support包的重复引用,2.指定详细的版本而不是[4,5)是为了!防备随着FB SDK的更新而导致sdk集成失败。

  • 4.添加开发和公布密钥散列 中除了官方的获取方法外,还可以通过代码:
  • try { PackageInfo info = getActivity().getPackageManager().getPackageInfo(getActivity().getPackageName(), PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String KeyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT); Log.d("KeyHash:", "KeyHash:" + KeyHash);//两次获取的不一样 此处取第一个的值 // Toast.makeText(this, "FaceBook HashKey:"+KeyHash, Toast.LENGTH_SHORT).show(); } } catch (PackageManager.NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { }

    然后打包成正式包运行来得到。

  • FB登录按钮的集成有两种方法:
  • 1.使用官方的按钮LoginButton按钮代码:
  • <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().logInWithReadPermissions(AppLoginActivity.this, Arrays.asList("public_profile", "user_friends"));

      天生测试用户,点击用户身份-测试用户。可以天生多个FB测试账户用于测试。

      现在APP还是在开发状态,在APP上架之前还需要将FB项目对外公开,否则普通用户仍旧无法登陆。点击应用考核-确认对外公开即可。

    总结

    好了,到现在为止已经集成了Facebook登录,总的来说比较简单,根据官方的步骤一步步实现就好。

    后续还会有FB的分享、好友约请、点赞等功能集成的文章,请继续关注。如有什么问题,可以联系我,联系方法:

    简书地点: http://www.jianshu.com/p/16efe98d4554/ )

    E-mail:931675174@qq.com

    本文网址: http://www.51iflove.com/p/2020927103333_9730_4282734144/home