diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 223130a..fc4a151 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -13,7 +13,7 @@ diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml index a5f05cd..64d3775 100644 --- a/.idea/jarRepositories.xml +++ b/.idea/jarRepositories.xml @@ -21,5 +21,10 @@ - + diff --git a/app/AndroidManifest.xml b/app/AndroidManifest.xml index de03a42..b6df756 100644 --- a/app/AndroidManifest.xml +++ b/app/AndroidManifest.xml @@ -69,6 +69,10 @@ + + @@ -118,4 +122,8 @@ + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 593b08c..58eeae9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -139,4 +139,5 @@ dependencies { implementation 'com.android.volley:volley:1.2.1' implementation 'org.greenrobot:eventbus:3.0.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' + implementation 'com.bytedance.ies.ugc.aweme:opensdk-oversea-external:0.2.1.0' } \ No newline at end of file diff --git a/app/src/com/cege/games/release/MainActivity.java b/app/src/com/cege/games/release/MainActivity.java index 9b2bf81..d1f1f1a 100644 --- a/app/src/com/cege/games/release/MainActivity.java +++ b/app/src/com/cege/games/release/MainActivity.java @@ -18,6 +18,9 @@ import android.view.MotionEvent; import android.view.Window; import android.widget.Toast; +import com.bytedance.sdk.open.tiktok.TikTokOpenApiFactory; +import com.bytedance.sdk.open.tiktok.api.TikTokOpenApi; +import com.bytedance.sdk.open.tiktok.authorize.model.Authorization; import com.cege.games.release.activity.CustomCaptureActivity; import com.cege.games.release.dialog.QRCodeActivity; import com.google.android.gms.auth.api.signin.GoogleSignIn; @@ -118,6 +121,10 @@ public class MainActivity extends Activity private CountDownLatch mAuthIntentLatch = new CountDownLatch(1); private static final String EXTRA_FAILED = "failed"; + public String getFunId() { + return funId; + } + @NonNull private final BrowserMatcher mBrowserMatcher = AnyBrowserMatcher.INSTANCE; @@ -804,7 +811,21 @@ public class MainActivity extends Activity } @MainThread private void verifyGoogleIDToken(String idToken) { - JcSDK.googleOauthCb(this.funId, null, idToken); + JcSDK.oauthCb(this.funId, null, idToken); + } + + // sign with tiktok + public void signWithTiktok(String funId) { + this.funId = funId; + Log.i(TAG, "login with tiktok: " + funId); +// STEP 1: Create an instance of TiktokOpenApi + TikTokOpenApi tiktokOpenApi= TikTokOpenApiFactory.create(this); + +// STEP 2: Create an instance of Authorization.Request and set parameters + Authorization.Request request = new Authorization.Request(); + request.scope = "user.info.basic,video.list"; + request.state = funId; + tiktokOpenApi.authorize(request); } diff --git a/app/src/com/cege/games/release/MainApplication.java b/app/src/com/cege/games/release/MainApplication.java index 65a992d..8b76aeb 100644 --- a/app/src/com/cege/games/release/MainApplication.java +++ b/app/src/com/cege/games/release/MainApplication.java @@ -3,6 +3,9 @@ package com.cege.games.release; import android.app.Application; import android.content.SharedPreferences; +import com.bytedance.sdk.open.tiktok.TikTokOpenApiFactory; +import com.bytedance.sdk.open.tiktok.TikTokOpenConfig; + public class MainApplication extends Application { public static MainApplication application; public static SharedPreferences _pref; @@ -11,5 +14,7 @@ public class MainApplication extends Application { super.onCreate(); application = this; _pref = getSharedPreferences(Constants.PREF_NAME, 0); + String tiktokClientKey = "awqbuzh2qymmq8hs"; + TikTokOpenApiFactory.init(new TikTokOpenConfig(tiktokClientKey)); } } diff --git a/app/src/com/cege/games/release/tiktokapi/TikTokEntryActivity.java b/app/src/com/cege/games/release/tiktokapi/TikTokEntryActivity.java new file mode 100644 index 0000000..259d965 --- /dev/null +++ b/app/src/com/cege/games/release/tiktokapi/TikTokEntryActivity.java @@ -0,0 +1,50 @@ +package com.cege.games.release.tiktokapi; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; + +import com.bytedance.sdk.open.tiktok.TikTokOpenApiFactory; +import com.bytedance.sdk.open.tiktok.api.TikTokOpenApi; +import com.bytedance.sdk.open.tiktok.authorize.model.Authorization; +import com.bytedance.sdk.open.tiktok.common.handler.IApiEventHandler; +import com.bytedance.sdk.open.tiktok.common.model.BaseReq; +import com.bytedance.sdk.open.tiktok.common.model.BaseResp; +import com.jc.jcfw.JcSDK; + +import androidx.annotation.Nullable; + +public class TikTokEntryActivity extends Activity implements IApiEventHandler { + private static final String TAG = TikTokEntryActivity.class.getSimpleName(); + TikTokOpenApi ttOpenApi; + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ttOpenApi= TikTokOpenApiFactory.create(this); + ttOpenApi.handleIntent(getIntent(),this); // receive and parse callback + } + @Override + public void onReq(BaseReq req) { + } + @Override + public void onResp(BaseResp resp) { + if (resp instanceof Authorization.Response) { + Authorization.Response response = (Authorization.Response) resp; +// Log.i(TAG, "errorCode: " + response.errorCode); +// Log.i(TAG, "errorMsg: " + response.errorMsg); +// Log.i(TAG, "authCode: " + response.authCode); +// Log.i(TAG, "state: " + response.state); +// Log.i(TAG, "grantedPermissions: " + response.grantedPermissions); + if (response.errorCode == 0) { + JcSDK.oauthCb(response.state, null, response.authCode); + } else { + JcSDK.oauthCb(response.state, response.errorMsg, null); + } + finish(); + } + } + @Override + public void onErrorIntent(@Nullable Intent intent) { + JcSDK.oauthCb(null, "error intent", null); + } +} diff --git a/app/src/com/jc/jcfw/JcSDK.java b/app/src/com/jc/jcfw/JcSDK.java index 6bb7ee5..13373ff 100644 --- a/app/src/com/jc/jcfw/JcSDK.java +++ b/app/src/com/jc/jcfw/JcSDK.java @@ -76,6 +76,10 @@ public class JcSDK { MainActivity.app.loadRestoreKey(funid, oid); } + public static void signWithTiktok(String funid) { + MainActivity.app.signWithTiktok(funid); + } + public static void signWithGoogle(String funid) { MainActivity.app.signWithGoogle(funid); } @@ -84,7 +88,7 @@ public class JcSDK { MainActivity.app.signOutGoogle(funid); } - public static void googleOauthCb(String funId, String error, String idToken) { + public static void oauthCb(String funId, String error, String idToken) { JSONObject result = new JSONObject(); try { if (error != "" && null != error) { @@ -97,7 +101,10 @@ public class JcSDK { } catch (JSONException e) { e.printStackTrace(); } - + if (null == funId || "".equals(funId)) { + funId = MainActivity.app.getFunId(); + } + Log.i("TAG" ,result.toString()); String methodName = "jniCallback"; JcSDK.runJS(funId, methodName, result.toString()); } diff --git a/build.gradle b/build.gradle index 1746a3d..8c92f82 100644 --- a/build.gradle +++ b/build.gradle @@ -4,6 +4,7 @@ buildscript { repositories { google() jcenter() + maven { url "https://artifact.bytedance.com/repository/AwemeOpenSDK" } } dependencies { classpath "com.android.tools.build:gradle:4.1.1" @@ -17,6 +18,7 @@ allprojects { repositories { google() jcenter() + maven { url "https://artifact.bytedance.com/repository/AwemeOpenSDK" } flatDir { dirs 'libs' } diff --git a/js/wallet.js b/js/wallet.js index 0b3c4ed..859360c 100644 --- a/js/wallet.js +++ b/js/wallet.js @@ -1,4 +1,4 @@ function jniCallback(...args) { - console.log(`jniCallback: ${args[0]}`) - jc.wallet.nativeSvr.handleNativeCallback(...args); -} \ No newline at end of file + console.log(`jniCallback: ${args[0]} | ${args[1]}`); + jc.wallet.nativeSvr.handleNativeCallback(...args); +}