修改discord登录代码, 改为通用的oauth登录
This commit is contained in:
parent
f64790f41d
commit
9337b84631
File diff suppressed because one or more lines are too long
@ -176,25 +176,9 @@
|
||||
android:launchMode="singleTask"
|
||||
android:taskAffinity="com.cege.games.release"
|
||||
android:exported="true" />
|
||||
<activity
|
||||
android:name=".apple.AppleLoginActivity"
|
||||
android:theme="@style/WebViewTheme" />
|
||||
<activity
|
||||
android:name=".apple.AppleLoginCbActivity"
|
||||
android:exported="true">
|
||||
<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=".discord.DiscordLoginCbActivity"
|
||||
android:name=".oauth.OAuthLoginCbActivity"
|
||||
tools:node="replace"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
@ -204,8 +188,8 @@
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<data
|
||||
android:scheme="cebgdiscordcb"
|
||||
android:path="/discord_login_result" />
|
||||
android:scheme="cfoauthcb"
|
||||
android:path="/login_result" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
|
@ -2,18 +2,5 @@ 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";
|
||||
|
||||
public static final String FUNID_PREFIX = "webpage_";
|
||||
|
||||
public static final String DISCORD_CLIENT_ID = "1199290913155981345";
|
||||
// public static final String DISCORD_REDIRECT_URI= "https://oauth-svr.cebggame.com/test/discord/oauth_redirect";
|
||||
public static final String DISCORD_REDIRECT_URI= "https://wallet.cebggame.com/discord/oauth_redirect";
|
||||
public static final String DISCORD_SCOPE = "email identify";
|
||||
|
||||
}
|
||||
|
@ -2,9 +2,6 @@ package com.cege.games.release;
|
||||
|
||||
import static androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG;
|
||||
import static androidx.biometric.BiometricManager.Authenticators.DEVICE_CREDENTIAL;
|
||||
import static com.cege.games.release.Constants.DISCORD_CLIENT_ID;
|
||||
import static com.cege.games.release.Constants.DISCORD_REDIRECT_URI;
|
||||
import static com.cege.games.release.Constants.DISCORD_SCOPE;
|
||||
import static org.cocos2dx.lib.Cocos2dxHelper.getActivity;
|
||||
|
||||
import android.content.Intent;
|
||||
@ -29,7 +26,7 @@ import com.bytedance.sdk.open.tiktok.base.VideoObject;
|
||||
import com.bytedance.sdk.open.tiktok.share.Share;
|
||||
import com.cege.games.release.activity.WebPageActivity;
|
||||
import com.cege.games.release.appauth.AppAuthSvr;
|
||||
import com.cege.games.release.apple.AppleLoginActivity;
|
||||
import com.cege.games.release.oauth.OAuthUtil;
|
||||
import com.cege.games.release.ui.UIManager;
|
||||
import com.cege.games.release.wallet.WalletUtil;
|
||||
import com.facebook.AccessToken;
|
||||
@ -90,8 +87,6 @@ public class MainActivity extends UnityPlayerActivity
|
||||
// code for request drive to download
|
||||
private static final int RC_REQUEST_DRIVE_TO_READ = 0X052;
|
||||
|
||||
private static final int RC_DISCORD_LOGIN = 0X053;
|
||||
|
||||
|
||||
public static final int FILE_SELECTOR_CODE = 0X014;
|
||||
private String title;
|
||||
@ -115,6 +110,7 @@ public class MainActivity extends UnityPlayerActivity
|
||||
private FirebaseAnalytics mFirebaseAnalytics;
|
||||
private AppEventsLogger fbLogger;
|
||||
private WalletUtil mWalletUtil;
|
||||
private OAuthUtil mOAuthUtil;
|
||||
|
||||
public boolean isGooglePlayServicesAvailable() {
|
||||
return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS;
|
||||
@ -387,26 +383,15 @@ public class MainActivity extends UnityPlayerActivity
|
||||
this.mFunID = funId;
|
||||
}
|
||||
|
||||
public void signWithDiscord(String funId) {
|
||||
AuthorizationServiceConfiguration config = new AuthorizationServiceConfiguration(
|
||||
Uri.parse("https://discord.com/api/oauth2/authorize"),
|
||||
Uri.parse("")
|
||||
);
|
||||
AuthorizationRequest.Builder authRequestBuilder = new AuthorizationRequest.Builder(
|
||||
config,
|
||||
DISCORD_CLIENT_ID,
|
||||
ResponseTypeValues.CODE,
|
||||
Uri.parse(DISCORD_REDIRECT_URI)
|
||||
);
|
||||
String[] scopes = DISCORD_SCOPE.split(" +");
|
||||
AuthorizationRequest authRequest = authRequestBuilder
|
||||
.setScopes(scopes)
|
||||
.setCodeVerifier(null, null, null)
|
||||
.setState(funId)
|
||||
.build();
|
||||
AuthorizationService service = new AuthorizationService(this);
|
||||
Intent authIntent = service.getAuthorizationRequestIntent(authRequest);
|
||||
startActivityForResult(authIntent, RC_DISCORD_LOGIN);
|
||||
public void oauthLogin(String funId, String jsonData) {
|
||||
if (this.mOAuthUtil == null) {
|
||||
this.mOAuthUtil = new OAuthUtil(this);
|
||||
}
|
||||
try {
|
||||
this.mOAuthUtil.startLogin(funId, jsonData);
|
||||
} catch (JSONException e) {
|
||||
JcSDK.nativeCb(funId, e.getMessage(), null);
|
||||
}
|
||||
}
|
||||
|
||||
public void logEvent(String content) {
|
||||
@ -422,16 +407,6 @@ public class MainActivity extends UnityPlayerActivity
|
||||
}
|
||||
}
|
||||
|
||||
public void signWithApple(String funId) {
|
||||
this.mFunID = 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(() -> {
|
||||
Intent intent = new Intent(this, WebPageActivity.class);
|
||||
|
@ -1,80 +0,0 @@
|
||||
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);
|
||||
// }
|
||||
});
|
||||
}
|
||||
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.cege.games.release.discord;
|
||||
package com.cege.games.release.oauth;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
@ -11,13 +11,13 @@ import androidx.annotation.Nullable;
|
||||
import com.cege.games.release.MainActivity;
|
||||
import com.jc.jcfw.JcSDK;
|
||||
|
||||
public class DiscordLoginCbActivity extends Activity{
|
||||
private static final String TAG = DiscordLoginCbActivity.class.getSimpleName();
|
||||
public class OAuthLoginCbActivity extends Activity {
|
||||
private static final String TAG = OAuthLoginCbActivity.class.getSimpleName();
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
Log.d(TAG, "receive discord login callback");
|
||||
Log.d(TAG, "receive oauth login callback");
|
||||
Intent intent = getIntent();
|
||||
|
||||
if (Intent.ACTION_VIEW.equals(intent.getAction())) {
|
61
app/src/com/cege/games/release/oauth/OAuthUtil.java
Normal file
61
app/src/com/cege/games/release/oauth/OAuthUtil.java
Normal file
@ -0,0 +1,61 @@
|
||||
package com.cege.games.release.oauth;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
|
||||
|
||||
import net.openid.appauth.AuthorizationRequest;
|
||||
import net.openid.appauth.AuthorizationService;
|
||||
import net.openid.appauth.AuthorizationServiceConfiguration;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public class OAuthUtil {
|
||||
private final Activity mActivity;
|
||||
|
||||
public OAuthUtil(Activity activity) {
|
||||
this.mActivity = activity;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param funId
|
||||
* @param jsonData: {
|
||||
* "endpoint": "",
|
||||
* "client_id": "",
|
||||
* "redirect_uri": "",
|
||||
* "response_type": "code",
|
||||
* "response_mode": "form_post", nullable
|
||||
* "scopes": "",
|
||||
* }
|
||||
* @throws JSONException
|
||||
*/
|
||||
public void startLogin(String funId, String jsonData) throws JSONException {
|
||||
JSONObject data = new JSONObject(jsonData);
|
||||
AuthorizationServiceConfiguration config = new AuthorizationServiceConfiguration(
|
||||
Uri.parse(data.getString("endpoint")),
|
||||
Uri.parse("")
|
||||
);
|
||||
AuthorizationRequest.Builder authRequestBuilder = new AuthorizationRequest.Builder(
|
||||
config,
|
||||
data.getString("client_id"),
|
||||
data.getString("response_type"),
|
||||
Uri.parse(data.getString("redirect_uri"))
|
||||
);
|
||||
String[] scopes = data.getString("scopes").split(" +");
|
||||
if (data.has("response_mode")) {
|
||||
authRequestBuilder.setResponseMode(data.getString("response_mode"));
|
||||
}
|
||||
AuthorizationRequest authRequest = authRequestBuilder
|
||||
.setScopes(scopes)
|
||||
.setCodeVerifier(null, null, null)
|
||||
.setState(funId)
|
||||
.setNonce(funId)
|
||||
.build();
|
||||
AuthorizationService service = new AuthorizationService(this.mActivity);
|
||||
Intent authIntent = service.getAuthorizationRequestIntent(authRequest);
|
||||
this.mActivity.startActivity(authIntent);
|
||||
}
|
||||
}
|
@ -129,11 +129,11 @@ public class JcSDK {
|
||||
}
|
||||
|
||||
public static void signWithApple(String funid) {
|
||||
MainActivity.app.signWithApple(funid);
|
||||
// MainActivity.app.signWithApple(funid);
|
||||
}
|
||||
|
||||
public static void signWithDiscord(String funid) {
|
||||
MainActivity.app.signWithDiscord(funid);
|
||||
public static void signWithOAuth(String funid, String jsonData) {
|
||||
MainActivity.app.oauthLogin(funid, jsonData);
|
||||
}
|
||||
|
||||
public static void signOutGoogle(String funid) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user