CocosCreator 2.4.5 整合Line登入(Android App)
- 承鑫 郭
- 2021年7月15日
- 讀畢需時 2 分鐘
LINE Login 介紹

將 LINE Login 的功能整合到 Web app 或 native app 中,用戶就可以使用 LINE Login。
當用戶使用 LINE Login 後,就能透過用戶的 LINE 帳號,輕鬆建立用於 Web app 和本應用程式的帳號。
LINE Login 的功能可以整合於 Web app、iOS、Android app 以及 Unity 中。
建立Line Provider以及Line Login Channel

CocosCreator建立Login按鈕以及綁定事件
//Line登入
lineLogin: function () {
console.log("Line login");
if (cc.sys.isNative) {
if (cc.sys.os == cc.sys.OS_ANDROID) {
let className = "yourClassPath";
let methodName = "lineLogin";
let methodSignature = "()V";
jsb.reflection.callStaticMethod(className, methodName, methodSignature);
}
Android Studio專案設定
minSdkVersion需求17以上。
build.gradle加入LineSDK依賴以及compileOptios。
repositories {...
jcenter()
}
dependencies {
...
implementation 'com.linecorp:linesdk:5.0.1'
...
}
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
...
}
Linesdk版本請依照https://github.com/line/line-sdk-android 更新到最新, 本範例使用5.3.1
AndroidManifest.xml加入網路Access許可
<uses-permission android:name="android.permission.INTERNET" />
實作 Line Login按鈕按下時要Call的事件以及接收
/** Line登入 **/
/** 因為Cocos呼叫必須為Static **/
public static void lineLogin() {
try{
// App-to-app login
Intent loginIntent = LineLoginApi.getLoginIntent(
Activity,
CHANNEL_ID,
new LineAuthenticationParams.Builder()
.scopes(Arrays.asList(Scope.PROFILE))
.build());
Activity.startActivityForResult(loginIntent, REQUEST_CODE);
}
catch(Exception e) {
Log.e("lineLogin ERROR", e.toString());
}
}
/** Line登入結果 **/
public static void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i(TAG, "Line onActivityResult data = " + data.toString());
if (requestCode != REQUEST_CODE) {
Log.e("ERROR", "Unsupported Request");
return;
}
LineLoginResult result = LineLoginApi.getLoginResultFromIntent(data);
Log.i(TAG, "Line getResponseCode data = " + result.getResponseCode());
switch (result.getResponseCode()) {
case SUCCESS:
// Login successful
// 成功要做的事
// Call回Cocos層
break;
case CANCEL:
// Login canceled by user
Log.e("ERROR", "LINE Login Canceled by user.");
break;
default:
// Login canceled due to other error
Log.e("ERROR", "Login FAILED!");
Log.e("ERROR", result.getErrorData().toString());
}
}
連結你的Line Channel和App
LINE Login settings填上你的App包名。

Demo

疑難排解
CocosCreator專案在導出Android時由於是從引擎直接Build, 所以有些東西需要自己再細看一下, 才能知道預設是什麼, 這次串LineSDK就發現Cocos的AppActivity被設置了一個屬性
android:taskAffinity=“”
askAffinity這個填空字串感覺是他這個activity不屬於任何一個package, 導致Line授權Allow之後沒辦法正常返回App, 所以這行可以砍掉或是字串填上自己的包名都可以, 這邊我卡了兩天整才找到這個問題, 記錄一下防止未來有人再卡在這裡了。
Comentarios