ETH官方钱包

創(chuàng)作內(nèi)容

3 GP

Cocos Creator 2.3.2 SDKBOX FaceBook第三方登入串接教學(xué)

作者:Majitoo│2020-05-09 12:43:40│巴幣:1,004│人氣:1703
這幾個(gè)禮拜在公司串第三方登入和第三方支付花了不少時(shí)間
因此想做個(gè)筆記

Cocos Creator版本:2.3.2
NDK : 21.0.6113669 (Android Studio上下載的最新版)
SDK : Android Studio上載的最新版
系統(tǒng):Window
目標(biāo)平臺(tái):Android

這邊我是先建立一個(gè)新的專案用來(lái)演示登入效果
文末會(huì)再貼上專案下載連結(jié)

平常我自己是用typescript做開發(fā)
所以我是新建一個(gè)helloworld-typescript 專案
建完後請(qǐng)先確認(rèn)自己新建專案能否打包APK成功
再寫本文時(shí)就有遇到項(xiàng)目編譯APK時(shí)出現(xiàn)
externalNativeBuildReleaseFeature的錯(cuò)誤
好像是我資料夾名稱出現(xiàn)_底線報(bào)錯(cuò)
我改檔案名稱就好了

能成功打包APK後,可以來(lái)開始安裝SDKBOX套件
打開CocosCreator
找到SDKBox並選擇Launch


點(diǎn)擊import可以看到這邊提供很多SDK

找到Social選項(xiàng)有個(gè)Facebook點(diǎn)擊import
專案就安裝好FaceBook SDK了!

此時(shí)打開CocosCreator專案
項(xiàng)目->構(gòu)建發(fā)布

上圖我說(shuō)明一下我自己是甚麼場(chǎng)合用這四個(gè)按鈕
1.
  是當(dāng)我編譯失敗時(shí)出現(xiàn)fail如上圖,此時(shí)我點(diǎn)擊1按鈕會(huì)出現(xiàn)記事本
  可以查看編譯失敗的log
2.
  構(gòu)建按鈕,當(dāng)你新建一個(gè)乾淨(jìng)的Cocos專案時(shí),是不會(huì)有Build資料夾的,
  只要點(diǎn)擊構(gòu)建按鈕則會(huì)產(chǎn)生出Build資料夾
3.
  編譯按鈕,當(dāng)我勾選調(diào)試模式看Log,接著準(zhǔn)備接換成release模式時(shí),
  我會(huì)再重新點(diǎn)擊編譯按鈕,確保打包出來(lái)的模式有更換
4.
  運(yùn)行按鈕,當(dāng)我手機(jī)USB有連接電腦時(shí),按下運(yùn)行則會(huì)直接安裝APP到手機(jī)裡

平常我自己在做真機(jī)測(cè)試時(shí),當(dāng)只有更改程式碼時(shí),
只需要點(diǎn)擊構(gòu)建+運(yùn)行即可同步最新code到真機(jī)上,是不必點(diǎn)編譯按鈕的。

回到正題安裝完FaceBook SDK後
點(diǎn)擊構(gòu)建按鈕
構(gòu)建完後接著點(diǎn)擊編譯按鈕會(huì)發(fā)現(xiàn)
編譯失敗了!
點(diǎn)擊上圖1的按鈕
可以查看打包出錯(cuò)原因

點(diǎn)擊後會(huì)出現(xiàn)記事本
可以看到其中一行錯(cuò)誤是
* What went wrong:
Execution failed for task ':game:transformClassesAndResourcesWithProguardForRelease'.

此時(shí)可以打開專案目錄下的
build\jsb-link\frameworks\runtime-src\proj.android-studio\app\proguard-rules.pro
build\jsb-link\frameworks\runtime-src\proj.android-studio\game\proguard-rules.pro
並且再這個(gè)兩個(gè)檔案結(jié)尾處加上

# facebook
-keep public class com.facebook.** { *; }
-dontwarn com.facebook.**

# cocos2d-x
-keep public class org.cocos2dx.** { *; }
-dontwarn org.cocos2dx.**
-keep public class com.chukong.** { *; }
-dontwarn com.chukong.**

# google play service
-keep public class com.google.android.gms.** { public *; }
-dontwarn com.google.android.gms.**

-keep class com.google.protobuf.** { *; }
-dontwarn com.google.protobuf.**

-keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
}

-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
    public static final *** NULL;
}

-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
    @com.google.android.gms.common.annotation.KeepName *;
}

-keepnames class * implements android.os.Parcelable {
    public static final ** CREATOR;
}

#sdkbox
-keep class com.sdkbox.** { *; }
-dontwarn com.sdkbox.**

加完之後 再重新構(gòu)建+編譯
就可以發(fā)現(xiàn)編譯正常了

我在這篇文章有列出更多其他打包失敗的解法


接著裝完FB SDK 環(huán)境沒問題的話,
就可以開始去FB 開發(fā)者頁(yè)面建立一個(gè)應(yīng)用程式


建立好應(yīng)用後會(huì)看到應(yīng)用程式編號(hào)
可以先記下來(lái)後面會(huì)用到
再依照下圖操作


接著不斷的點(diǎn)擊繼續(xù)就好
到第三步驟時(shí)
只要按照他的說(shuō)明去填即可

再來(lái)是最麻煩的第四步會(huì)看到

大意是說(shuō)你需要先產(chǎn)生一個(gè)keystore
然後cocos專案就要使用這個(gè)key
接著再輸入keytool -exportcert指令取得到密鑰雜湊後
再填入下方選項(xiàng)內(nèi)

詳細(xì)步驟如下:
1.產(chǎn)生一組keystore
keytool -genkey -v -keystore tester.keystore -alias tester -keyalg RSA -validity 10000
我這是用指令的方式產(chǎn)生的,也可以利用Android Studio去產(chǎn)生 效果都是一樣的

2.下載openssl-0.9.8e_X64檔案
  我自己是下載0.9.8e版本的,下載後解壓縮放自己要的位子

3.取得密鑰
指令意思大致上是這樣
keytool -exportcert -alias {keystore別名} -keystore "{keyStore路徑}" | "{openssl.exe路徑}"sha1 -binary | "{openssl.exe路徑}" base64

以我的專案來(lái)說(shuō)會(huì)是
keytool -exportcert -alias tester -keystore "C:\Users\Jim\tester.keystore" | "C:\Users\Jim\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary | "C:\Users\Jim\openssl-0.9.8e_X64\bin\openssl.exe" base64

圖中紅框我拿到的金鑰
再把此金鑰貼到FB開發(fā)頁(yè)面的密鑰雜湊選項(xiàng)即可

以上是FaceBook開發(fā)者那邊的設(shè)定
接下來(lái)是SDKBox那邊的設(shè)定

FaceBook SDKBox官方文檔和API說(shuō)明

Setup Android
  • Make sure java -version >= 1.7
  • Configure your APP on Facebook follow Android Quick Start Guide
  • Open res/values/strings.xml and replace facebook_app_id with your Facebook App ID
  • Open AndroidManifest.xml and replace _replace_with_your_app_id_ with your Facebook App ID
  • Open project.properties and change target to target=android-15
只要設(shè)定列表中的第三行就好

第三行是打開跟目錄下的
build\jsb-link\frameworks\runtime-src\proj.android-studio\res\values\strings.xml
原本會(huì)是
<?xml version='1.0' encoding='UTF-8'?>
<resources>
    <string name="app_name" translatable="false">FaceBookLogin</string>
    <string name="facebook_app_id">your_app_id</string>
    <string name="fb_login_protocol_scheme">fbyour_app_id</string>
</resources>

your_app_id的部分換成剛FB開發(fā)頁(yè)創(chuàng)立的應(yīng)用程式編號(hào)
如果以我的專案舉例則會(huì)改成

<?xml version='1.0' encoding='UTF-8'?>
<resources>
    <string name="app_name" translatable="false">FaceBookLogin</string>
    <string name="facebook_app_id">910007862813093</string>
    <string name="fb_login_protocol_scheme">fb910007862813093/string>
</resources>

接著再打開build\jsb-link\res\sdkbox_config.json
{
"debug":true,
"app_id":"填入你的FB應(yīng)用程式ID",
"url_scheme_suffix":""
}

以上都調(diào)整完畢後終於來(lái)到最後一步的打包了
記得再項(xiàng)目構(gòu)建那邊不要勾選調(diào)試模式
否則FB不會(huì)授權(quán)給你登入

除非打包選擇的金鑰是用debug.keystore
才需要勾選調(diào)試模式


主要程式碼:
        //fb登入初始化
        sdkbox.PluginFacebook.init();

        if (cc.sys.isNative) {
            if (sdkbox.PluginFacebook.isLoggedIn())
                sdkbox.PluginFacebook.logout();
            sdkbox.PluginFacebook.login()
            sdkbox.PluginFacebook.setListener({
                onLogin: (isLogin, msg) => {
                },
                onAPI: (tag, data) => { },
                onSharedSuccess: function (data) { },
                onSharedFailed: function (data) { },
                onSharedCancel: function () { },
                onPermission: function (isLogin, msg) { },
                onGetUserInfo: (
                    (userInfo) => {
                        //使用者資料
                        this.label.string = sdkbox.PluginFacebook.getUserID()
                    }
                )
            });
        }

成功後真機(jī)效果圖:

顯示玩家UID


大致流程基本上就是這樣
取到玩家UID後就能跟自己遊戲帳號(hào)做綁定傳給server
就能做一系列的功能了
以後有空的話,
會(huì)再寫有關(guān)SDKBOX的 Google Play Services登入
以及第三方支付功能In App Purchase的心得筆記

引用網(wǎng)址:http://www.jamesdambrosio.com/TrackBack.php?sn=4776349
All rights reserved. 版權(quán)所有,保留一切權(quán)利

相關(guān)創(chuàng)作

同標(biāo)籤作品搜尋:Cocos Creator|Android Studio|Cocos2d|Cocos2d打包|Cocos打包|第三方登入|Facebook登入|cocos 第三方登入|FB登入|第三方FB登入

留言共 1 篇留言

terryaw
請(qǐng)問在使用Android網(wǎng)頁(yè)登入的時(shí)候是否有碰到過(guò)回到APP的時(shí)候出現(xiàn)了兩個(gè)相同名稱的APP?
如圖:https://drive.google.com/file/d/10uroQfRD4lDO3l2OwxMY4E4b_aeU-61l/view?usp=sharing
感謝解答!

06-03 17:25

我要留言提醒:您尚未登入,請(qǐng)先登入再留言

3喜歡★jimmyy512 可決定是否刪除您的留言,請(qǐng)勿發(fā)表違反站規(guī)文字。

前一篇:Cocos Creato... 後一篇:Cocos Creato...


face基於日前微軟官方表示 Internet Explorer 不再支援新的網(wǎng)路標(biāo)準(zhǔn),可能無(wú)法使用新的應(yīng)用程式來(lái)呈現(xiàn)網(wǎng)站內(nèi)容,在瀏覽器支援度及網(wǎng)站安全性的雙重考量下,為了讓巴友們有更好的使用體驗(yàn),巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁(yè)面呈現(xiàn)和功能。
屆時(shí)建議您使用下述瀏覽器來(lái)瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業(yè)系統(tǒng)版本才可使用)

face我們了解您不想看到廣告的心情? 若您願(yuàn)意支持巴哈姆特永續(xù)經(jīng)營(yíng),請(qǐng)將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學(xué)】