Cocos Creator Android 平台 Facebook 原生登录(一)

简介: Cocos Creator Android 平台 Facebook 原生登录

在做海外项目中,经常需要接入Facebook SDK ,现将CocosCreator Android 平台 Facebook 登录的接入流程记录下来,以备有需要的朋友做参考。



一、准备工作



1、首先在facebook 开发者平台 注册账号,创建app,获取app的应用编号。



怎么注册账号,怎么创建app ,这里就不再细说。

app的应用编号和密钥,如下所示:



2、设置应用密钥散列



生成密钥散列有2种方式:



(1)、通过代码获取

//获取facebook所需的密钥散列
try {
  PackageInfo info = getPackageManager().getPackageInfo("com.x.x",   PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
  MessageDigest md = MessageDigest.getInstance("SHA");
  md.update(signature.toByteArray());
  showLog("Base64 hash------" + Base64.encodeToString(md.digest(), Base64.DEFAULT));
  }
} catch (PackageManager.NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}



(2)、通过工具进行获取



第一步,通过命令行的方式获取到证书指纹SHA1



发布证书指纹获取方式:

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64



开发证书指纹获取方式:

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



证书指纹示例:

SHA1: 9D:2F:E0:3C:8E:DF:ED:8C:2B:28:88:92:60:A3:82:63:81:4F:3D:9D



第二步,使用工具,将SHA1 证书指纹转化为密钥散列



在线工具:http://tomeko.net/online_tools/hex_to_base64.php

详细使用步骤,请查看根据 sha-1 证书值获取 Facebook 的登录需要使用的散列值



密钥散列可填写多个:



3、添加平台



这里以添加 google play 平台为例进行说明。

(1)、点击下方“添加平台” 按钮 ,在弹出的二级页面依次选择 android ->google play 。

(2)、设置软件包名,包名就是项目包名 com.xxx.xxx。

(3)、设置类名,类名里面填写启动activity 全路径,例如:org.cocos2dx.javascript.AppActivity。





3、创建测试账号,修改密码







二、代码部分调整



1、在项目层 build.gradle ,引入facebook 最新版本sdk。



implementation 'com.facebook.android:facebook-login:latest.release'
implementation 'com.facebook.android:facebook-android-sdk:latest.release'



2、AndroidManifest.xml 配置



(1)、添加网络访问权限,如果已经开启,则忽略。



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



(2)、在 application 添加 meta-data 元素 和针对 Facebook 的 activity 元素。



<!-- SDK Facebook start! -->
        <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" />
<!-- SDK Facebook end! -->



(3)、在 application 启动activity 元素添加 scheme



<activity
            android:name="org.cocos2dx.javascript.AppActivity"
            android:screenOrientation="sensorPortrait"
            android:configChanges="orientation|keyboardHidden|screenSize|screenLayout"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
            android:launchMode="singleTask"
            android:exported="true"
            android:taskAffinity="" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter  android:autoVerify="true">
                <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>



3、res/values/strings.xml 配置



<string name="facebook_app_id">285717330186354</string>
    <string name="fb_login_protocol_scheme">fb285717330186356</string>

facebook_app_id :app的应用编号

fb_login_protocol_scheme:fb+app的应用编号





相关文章
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
1604 4
|
Android开发 数据安全/隐私保护 开发者
Android自定义view之模仿登录界面文本输入框(华为云APP)
本文介绍了一款自定义输入框的实现,包含静态效果、hint值浮动动画及功能扩展。通过组合多个控件完成界面布局,使用TranslateAnimation与AlphaAnimation实现hint文字上下浮动效果,支持密码加密解密显示、去除键盘回车空格输入、光标定位等功能。代码基于Android平台,提供完整源码与attrs配置,方便复用与定制。希望对开发者有所帮助。
252 0
|
9月前
|
存储 API Android开发
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
851 4
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
|
XML Java 数据库
安卓项目:app注册/登录界面设计
本文介绍了如何设计一个Android应用的注册/登录界面,包括布局文件的创建、登录和注册逻辑的实现,以及运行效果的展示。
1236 1
安卓项目:app注册/登录界面设计
|
Android开发
错误记录:调用原生TvSettings 的 com.android.tv.settings.device.storage.ResetActivity 无法启动
本文记录了一个Android TV设置中由于未设置`android:exported="true"`导致`com.android.tv.settings.device.storage.ResetActivity`无法被第三方app启动的错误,并通过添加该属性成功解决了问题。
352 1
|
Android开发 数据安全/隐私保护 虚拟化
安卓手机远程连接登录Windows服务器教程
安卓手机远程连接登录Windows服务器教程
3872 5
|
Java API 开发工具
Cocos游戏如何快速接入安卓优量汇广告变现?
本文介绍了如何在Cocos游戏项目中快速接入安卓优量汇广告,通过详细的步骤指导,包括前期准备、编辑gradle和清单文件、核心代码集成等,帮助开发者轻松实现广告功能,增加游戏的盈利渠道。文中还提供了示例工程下载链接,方便开发者直接上手实践。
Cocos游戏如何快速接入安卓优量汇广告变现?
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
Android远程连接和登录FTPS服务代码(commons.net库)
468 1
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
很多文章都介绍了FTPClient如何连接ftp服务器,但却很少有人说如何连接一台开了SSL认证的ftp服务器,现在代码来了。
524 2