Tôi đã bị kẹt trong điều này hàng giờ vì điều này đã hoạt động trước đó nhưng đột nhiên dừng lại để hoạt động như mong đợi. Tôi không thực sự biết làm thế nào và tại sao như tôi đã kiểm tra lại tất cả các dòng mã trong quá trình mà không thể nhìn thấy những gì sai vì vậy tôi yêu cầu các bạn giúp đỡ.Kết quả lược đồ OAuth và tùy chỉnh trong một "ERR_UNKNOWN_URL_SCHEME" trong Chrome
Được rồi. Vì vậy, tôi đã thực hiện hoạt động LoginScreen
bằng một nút bắt đầu từ Intent.ACTION_VIEW
mới khi nhấp. Điều này bắt đầu quá trình OAUTH trong trình duyệt với ApiManager.OAUTH_CALLBACK_URI
được đặt thành stjapp://oauthresponse
.
Dưới đây là AndroidManifest.xml
một phần của tôi cho hoạt động này:
<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>
Làm thế nào tôi bắt đầu Intent.ACTION_VIEW
trong hoạt động của tôi:
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);
}
};
Và đây là một ảnh chụp màn hình của những gì xảy ra trong trình duyệt:
Ở đó, tôi phải quay lại hoạt động LoginScreen
và xử lý các tham số truy vấn code
trong phương thức onNewIntent
nhưng ... vâng, điều này không hoạt động như mong đợi nữa.
Bất kỳ trợ giúp nào được đánh giá cao.
Mọi thứ hoạt động như mong đợi sẽ mở liên kết bằng trình duyệt tích hợp của Android. Bắt đầu cảm thấy như tôi sẽ phải sử dụng một 'WebView' nội bộ thay vì để cho phần này của quá trình OAuth bên ngoài. Có suy nghĩ gì không? – kytwb