Ich bin seit Stunden auf dieser Sache festgefahren, da das Ding vorher arbeitete, aber plötzlich aufhörte, sich wie erwartet zu verhalten. Ich weiß nicht wirklich, wie und warum ich jede einzelne Codezeile überprüft habe, ohne in der Lage zu sein zu sehen, was falsch ist, also bitte ich euch um Hilfe.OAuth und benutzerdefiniertes Schema führen zu einem "ERR_UNKNOWN_URL_SCHEME" in Chrome
In Ordnung. So habe ich eine LoginScreen
Aktivität mit einer Schaltfläche, die eine neue Intent.ACTION_VIEW
auf Klick startet. Dies startet den OAUTH-Prozess im Browser mit ApiManager.OAUTH_CALLBACK_URI
auf stjapp://oauthresponse
.
Hier ist mein AndroidManifest.xml
Teil für diese Aktivität:
<activity
android:name=".LoginScreen"
android:label="@string/application"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</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="stjapp" android:host="oauthresponse" />
</intent-filter>
</activity>
Wie kann ich die Intent.ACTION_VIEW
in meiner Tätigkeit beginnen:
private View.OnClickListener loginHandler = new View.OnClickListener() {
public void onClick(View v) {
OAuthClientRequest request = null;
try {
request = OAuthClientRequest
.authorizationLocation(ApiManager.OAUTH_AUTHORIZE)
.setClientId(ApiManager.CLIENT_ID).setRedirectURI(ApiManager.OAUTH_CALLBACK_URI)
.buildQueryMessage();
}
catch (OAuthSystemException e) { e.printStackTrace(); }
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(request.getLocationUri() + "&response_type=code"));
startActivity(intent);
}
};
Und hier ist ein Screenshot von dem, was im Browser geschieht:
Dort sollte ich wieder zu meiner LoginScreen
Aktivität zurückkehren und die code
Abfrageparameter innerhalb der onNewIntent
Methode behandeln, aber ... ja, das Ding funktioniert nicht mehr wie erwartet.
Jede Hilfe wird geschätzt.
Alles funktioniert wie erwartet, den Link mit dem integrierten Browser von Android zu öffnen. Fange an zu fühlen, dass ich eine interne 'WebView' verwenden muss, anstatt diesen Teil des OAuths nach draußen verarbeiten zu lassen. Irgendwelche Gedanken? – kytwb