实现appleid的登录
This commit is contained in:
parent
1f25535cac
commit
3e0ace1d07
@ -14,7 +14,6 @@
|
||||
<activity android:name=".MainActivity" android:screenOrientation="sensorLandscape" android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
@ -47,6 +46,26 @@
|
||||
</activity>
|
||||
<activity android:name=".tiktokapi.TikTokEntryActivity" android:exported="true">
|
||||
</activity>
|
||||
<activity android:name=".apple.AppleLoginActivity" android:theme="@style/CaptureTheme">
|
||||
</activity>
|
||||
<activity android:name=".apple.AppleLoginCbActivity" android:exported="true">
|
||||
<intent-filter android:label="deeplink">
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<!-- Accepts URIs that begin with "https://wallet.cebggame.com/apple_login_result” -->
|
||||
<data android:scheme="https"
|
||||
android:host="wallet.cebggame.com"
|
||||
android:pathPrefix="/apple_login_result" />
|
||||
<!-- note that the leading "/" is required for pathPrefix-->
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW"/>
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
<category android:name="android.intent.category.BROWSABLE"/>
|
||||
<data android:scheme="cebg" android:path="/apple_login_result"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name="com.facebook.FacebookActivity" android:configChanges=
|
||||
"keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" />
|
||||
<activity android:name="com.facebook.CustomTabActivity" android:exported="true">
|
||||
|
@ -2,4 +2,11 @@ package com.cege.games.release;
|
||||
|
||||
public class Constants {
|
||||
public static final String PREF_NAME = "jcwallet";
|
||||
|
||||
public static final String APPLE_CLIENT_ID = "wallet.cebggame.com";
|
||||
public static final String APPLE_REDIRECT_URI = "https://wallet.cebggame.com/apple/oauth_redirect";
|
||||
public static final String APPLE_SCOPE = "name%20email";
|
||||
|
||||
public static final String APPLE_AUTH_URL = "https://appleid.apple.com/auth/authorize";
|
||||
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
package com.cege.games.release;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
@ -14,8 +13,6 @@ import android.provider.MediaStore;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.Window;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.bytedance.sdk.open.tiktok.TikTokOpenApiFactory;
|
||||
@ -23,6 +20,7 @@ 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.activity.WebPageActivity;
|
||||
import com.cege.games.release.apple.AppleLoginActivity;
|
||||
import com.cege.games.release.dialog.QRCodeActivity;
|
||||
import com.facebook.AccessToken;
|
||||
import com.facebook.CallbackManager;
|
||||
@ -878,6 +876,16 @@ public class MainActivity extends UnityPlayerActivity
|
||||
}
|
||||
}
|
||||
|
||||
public void signWithApple(String funId) {
|
||||
this.funId = funId;
|
||||
Log.i(TAG, "login with apple: " + funId);
|
||||
runOnUiThread(() -> {
|
||||
Intent intent = new Intent(this, AppleLoginActivity.class);
|
||||
intent.putExtra("funId", funId);
|
||||
startActivity(intent);
|
||||
});
|
||||
}
|
||||
|
||||
public void showPage(String fid, final String url) {
|
||||
runOnUiThread(() -> {
|
||||
Log.i(TAG, "show page: " + url);
|
||||
|
80
app/src/com/cege/games/release/apple/AppleLoginActivity.java
Normal file
80
app/src/com/cege/games/release/apple/AppleLoginActivity.java
Normal file
@ -0,0 +1,80 @@
|
||||
package com.cege.games.release.apple;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Rect;
|
||||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.webkit.CookieManager;
|
||||
import android.webkit.WebResourceRequest;
|
||||
import android.webkit.WebSettings;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
|
||||
import com.cege.games.release.Constants;
|
||||
import com.cege.games.release.R;
|
||||
|
||||
public class AppleLoginActivity extends Activity {
|
||||
private static final String TAG = AppleLoginActivity.class.getSimpleName();
|
||||
@SuppressLint("SetJavaScriptEnabled")
|
||||
@Override
|
||||
public void onCreate(android.os.Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
Intent intent = getIntent();
|
||||
setContentView(R.layout.activity_web_page);
|
||||
|
||||
WebView.setWebContentsDebuggingEnabled(true);
|
||||
WebView mWebView = findViewById(R.id.web_view);
|
||||
WebSettings webSettings = mWebView.getSettings();
|
||||
webSettings.setJavaScriptEnabled(true);
|
||||
webSettings.setDomStorageEnabled(true);
|
||||
webSettings.setDatabaseEnabled(true);
|
||||
webSettings.setAllowContentAccess(true);
|
||||
webSettings.setAppCacheEnabled(true);
|
||||
webSettings.setBuiltInZoomControls(true);
|
||||
webSettings.setUseWideViewPort(true);
|
||||
webSettings.setLoadWithOverviewMode(true);
|
||||
webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
|
||||
CookieManager.getInstance().setAcceptThirdPartyCookies(mWebView,true);
|
||||
// get url from intent
|
||||
String funId = intent.getStringExtra("funId");
|
||||
String url = Constants.APPLE_AUTH_URL
|
||||
+ "?response_type=code%20id_token&v=1.1.6&response_mode=form_post&client_id="
|
||||
+ Constants.APPLE_CLIENT_ID + "&scope=" + Constants.APPLE_SCOPE + "&state=" + funId + "&redirect_uri="
|
||||
+ Constants.APPLE_REDIRECT_URI;
|
||||
// show web view
|
||||
mWebView.loadUrl(url);
|
||||
mWebView.setWebViewClient(new WebViewClient() {
|
||||
@Override
|
||||
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
|
||||
String url = request.getUrl().toString();
|
||||
Log.i(TAG, url);
|
||||
if (url.startsWith("cebg")) {
|
||||
// Close the dialog after getting the authorization code
|
||||
Intent myapp_intent = new Intent(Intent.ACTION_VIEW);
|
||||
myapp_intent.setData(Uri.parse(url));
|
||||
startActivity(myapp_intent);
|
||||
finish();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void onPageFinished(WebView view, String url) {
|
||||
// super.onPageFinished(view, url);
|
||||
// Rect displayRectangle = new Rect();
|
||||
// Window window = getWindow();
|
||||
// window.getDecorView().getWindowVisibleDisplayFrame(displayRectangle);
|
||||
// ViewGroup.LayoutParams layoutparms = view.getLayoutParams();
|
||||
// layoutparms.height = displayRectangle.height();
|
||||
// layoutparms.width = displayRectangle.width();
|
||||
// view.setLayoutParams(layoutparms);
|
||||
// }
|
||||
});
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package com.cege.games.release.apple;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.jc.jcfw.JcSDK;
|
||||
|
||||
public class AppleLoginCbActivity extends Activity {
|
||||
private static final String TAG = AppleLoginCbActivity.class.getSimpleName();
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
Log.d(TAG, "receive apple login callback");
|
||||
Intent intent = getIntent();
|
||||
if (Intent.ACTION_VIEW.equals(intent.getAction())) {
|
||||
Uri uri = intent.getData();
|
||||
String error = uri.getQueryParameter("error");
|
||||
String state = uri.getQueryParameter("state");
|
||||
if (null != error && !error.isEmpty()) {
|
||||
JcSDK.nativeCb(state, error, null);
|
||||
} else {
|
||||
String token = uri.getQueryParameter("token");
|
||||
JcSDK.nativeCb(state, null, token);
|
||||
}
|
||||
finish();
|
||||
}
|
||||
}
|
||||
}
|
@ -94,6 +94,9 @@ public class JcSDK {
|
||||
public static void signWithGoogle(String funid) {
|
||||
MainActivity.app.signWithGoogle(funid);
|
||||
}
|
||||
public static void signWithApple(String funid) {
|
||||
MainActivity.app.signWithApple(funid);
|
||||
}
|
||||
|
||||
public static void signOutGoogle(String funid) {
|
||||
MainActivity.app.signOutGoogle(funid);
|
||||
|
Loading…
x
Reference in New Issue
Block a user