top of page
搜尋

CocosCreator 2.4.5 整合Line登入(Android App)

  • 作家相片: 承鑫 郭
    承鑫 郭
  • 2021年7月15日
  • 讀畢需時 2 分鐘

LINE Login 介紹



  1. 將 LINE Login 的功能整合到 Web app 或 native app 中,用戶就可以使用 LINE Login。

  2. 當用戶使用 LINE Login 後,就能透過用戶的 LINE 帳號,輕鬆建立用於 Web app 和本應用程式的帳號。

  3. 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
    }
...
}
<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, 所以這行可以砍掉或是字串填上自己的包名都可以, 這邊我卡了兩天整才找到這個問題, 記錄一下防止未來有人再卡在這裡了。

 
 
 

留言


文章: Blog2_Post

訂閱表單

感謝您提交以上資訊!

  • Facebook
  • Twitter
  • LinkedIn

©2020 by CCGamer. Proudly created with Wix.com

bottom of page