top of page
搜尋

CocosCreator 2.4.5 整合Line登入(Android App)

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

LINE Login 介紹


ree

  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



ree

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包名。

ree


Demo


ree

疑難排解


  • CocosCreator專案在導出Android時由於是從引擎直接Build, 所以有些東西需要自己再細看一下, 才能知道預設是什麼, 這次串LineSDK就發現Cocos的AppActivity被設置了一個屬性


	android:taskAffinity=“”

  • askAffinity這個填空字串感覺是他這個activity不屬於任何一個package, 導致Line授權Allow之後沒辦法正常返回App, 所以這行可以砍掉或是字串填上自己的包名都可以, 這邊我卡了兩天整才找到這個問題, 記錄一下防止未來有人再卡在這裡了。

 
 
 

Comentarios


文章: Blog2_Post

訂閱表單

感謝您提交以上資訊!

  • Facebook
  • Twitter
  • LinkedIn

©2020 by CCGamer. Proudly created with Wix.com

bottom of page