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的应用编号





相关文章
|
2月前
|
Android开发
安卓SO层开发 -- 编译指定平台的SO文件
安卓SO层开发 -- 编译指定平台的SO文件
33 0
|
3月前
|
数据安全/隐私保护 Android开发
2023安卓逆向 -- 某合伙apk登录加密分析
2023安卓逆向 -- 某合伙apk登录加密分析
26 0
|
5月前
|
测试技术 数据库 Android开发
0008Java安卓程序设计-ssm基于Android平台的健康管理系统
0008Java安卓程序设计-ssm基于Android平台的健康管理系统
27 0
|
6月前
|
安全 Android开发 开发者
Android 原生 Picture in Picture 画中画功能避坑指南(下)
Android 原生 Picture in Picture 画中画功能避坑指南(下)
105 0
|
1月前
|
运维 监控 Java
应用研发平台EMAS产品常见问题之安卓构建版本失败如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
1月前
|
运维 监控 Android开发
应用研发平台EMAS常见问题之安卓push的离线转通知目前无法收到如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
25 1
|
3月前
|
编解码 测试技术 开发工具
如何实现Android视音频数据对接到GB28181平台(SmartGBD)
如何实现Android视音频数据对接到GB28181平台(SmartGBD)
|
3月前
|
开发工具 Android开发
Android平台RTMP推送|轻量级RTSP服务|GB28181设备接入模块之实时快照保存JPG还是PNG?
Android平台RTMP推送|轻量级RTSP服务|GB28181设备接入模块之实时快照保存JPG还是PNG?
|
3月前
|
数据采集 编解码 图形学
Android平台Unity下如何通过WebCamTexture采集摄像头数据并推送至RTMP服务器或轻量级RTSP服务
Android平台Unity下如何通过WebCamTexture采集摄像头数据并推送至RTMP服务器或轻量级RTSP服务
104 0
|
3月前
|
API Android开发
对于应用研发平台EMAS中安卓 API 32 收不到 FCM 推送的问题
对于应用研发平台EMAS中安卓 API 32 收不到 FCM 推送的问题
78 3