我正试图使用Android Chrome自定义选项卡实现OAuth2流程,但当Chrome自定义选项卡接收到我的应用程序方案的302时,我的应用程序始终关闭(没有崩溃)。
如果我创建一个包含href链接并手动触摸它的HTML页面,则Chrome自定义选项卡会正确地切换到我的应用程序。
似乎在处理Chrome自定义选项卡中的服务器302重定向时,它将无法正确处理我的自定义应用程序方案...但是为什么呢?
如果我在默认浏览器或WebView中尝试相同的重定向URL,则一切也都正常工作。
这是我的当前设置:
MainActiviy.java
Button btnChromeCustomTab = (Button) findViewById(R.id.btnChromeCustomTab);
btnChromeCustomTab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();
String packageName = CustomTabsHelper.getPackageNameToUse(MainActivity.this);
customTabsIntent.intent.setPackage(packageName);
Uri theLocationUri = Uri.parse(URL);
customTabsIntent.launchUrl(MainActivity.this, theLocationUri);
}
});
AndroidManifest.xml
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter android:label="@string/filter_title">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="myappscheme" android:host="oauth" />
</intent-filter>
</activity>
应用程序收到的HTTP 302代码重定向URL为:
myappscheme://oauth?code=1234567&state=tokenCheck123
build.gradle
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "de.myapptest.webviewtest"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:design:23.2.1'
compile 'com.android.support:customtabs:23.0.0+'
}
感谢任何帮助...
(myappscheme://...)
,但它无法工作。它显示“未知方案”。 - User