使用Chrome自定义选项卡进行SSO登录



在我的应用程序中,我需要通过网页登录。成功登录后,它会在响应的标头中返回"my-app:/auth?code=xxxxxx&status=xxxxx"。我在应用程序中配置了一个自定义架构。

打开Chrome自定义选项卡的代码:

StringBuilder url = new StringBuilder(<url>);
url=url.append("&response_type=code");
url=url.append("&redirect_uri=");
url=url.append("my-app:/auth");
CustomTabsSession session = getSession();
CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder();
intentBuilder.setToolbarColor(Color.parseColor("#ffffff"));
intentBuilder.setShowTitle(true);
intentBuilder.setNavigationBarColor(Color.parseColor("#ffffff"));
intentBuilder.setSecondaryToolbarColor(Color.parseColor("#ffffff"));
intentBuilder.setSession(session);
CustomTabsIntent customTabsIntent=intentBuilder.build();
CustomTabsHelper.addKeepAliveExtra(this, customTabsIntent.intent);
CustomTabActivityHelper.openCustomTab(this, customTabsIntent, Uri.parse(url.toString()),
(activity, uri1) -> {
showProgressDialog();
Bundle bundle = new Bundle();
bundle.putInt("screen_type", type);
LoginWebViewFragment loginWebViewFragment = LoginWebViewFragment.getInstance();
loginWebViewFragment.setArguments(bundle);
startNewFragment(loginWebViewFragment, "LoginWebViewFragment");
});

清单文件中配置的架构:

<activity
android:name="<myActivity>"
android:screenOrientation="portrait"
android:theme="@style/transparent_status_bar" >
<intent-filter>
<data android:scheme="my-app" />
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
</activity>

成功登录后,应用程序不会打开。这是否可以从Chrome自定义选项卡重定向到应用程序?

您在重定向URI中错过了一个斜杠:my-app:/auth应该是my-app://auth

相关内容

  • 没有找到相关文章

最新更新