मैं एक ऐप विकसित कर रहा हूं जो प्रमाणीकरण के लिए ओएथ का उपयोग करता है लेकिन मुझे ओथ कॉलबैक को संभालने में थोड़ी सी समस्या है।यदि वेबव्यू के साथ प्रमाणीकरण किया जाता है तो इरादा फ़िल्टर के साथ OAuth URL कॉलबैक को कैसे संभालें?
प्रमाणीकरण
मेरा ऐप लॉगिन स्क्रीन के रूप में एक वेबव्यू है और मैं अपने वेब दृश्य में प्रमाणीकरण फ़ॉर्म लोड करने के लिए एक यूआरएल को देखते हुए कर रहा हूँ।
https://myoauthhost.com/oauth/auth?response_type=code&client_id=XXXXXXX&redirect_uri=YYYYYYYY&scope=ZZZZZZZZZZ
और प्रमाणन गतिविधि (AuthActivity.java) में, मैं निम्नलिखित है:
String authURL = https://myoauthhost.com/oauth/auth?response_type=code&client_id=XXXXXXX&redirect_uri=YYYYYYYY&scope=ZZZZZZZZZZ
myWebView.loadUrl(authURL);
Manifest.xml में
, मैं OAuth कॉलबैक के लिए निम्नलिखित है मान लें कि URL है हैंडलिंग:
<activity
android:name=".AuthActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<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:host="authprovider"
android:scheme="auth" />
</intent-filter>
</activity>
समस्या
यह यूआरएल जब वेबव्यू में उपयोग किया जाता है (loadURL() विधि के साथ) (जिसे वेबव्यू में लोड किया जाना चाहिए) से वास्तविक ओथ वेब युक्त अन्य यूआरएल पर रीडायरेक्ट करता है। समस्या यह है कि यह पुनर्निर्देशन एंड्रॉइड में स्वचालित रूप से इरादा चयन लॉन्च करता है: चूंकि यूआरएल को वेब ब्राउजर द्वारा संभाला जाना चाहिए, एंड्रॉइड आपको यूआरएल खोलने के लिए फोन पर उपलब्ध वेब ब्राउज़र में से एक चुनने देता है।
इस के बाद से नहीं है जो मैं चाहता, मैं इतना है कि पुनर्निर्देशन वेबव्यू भीतर नियंत्रित किया जाता है, लेकिन एक वेब ब्राउज़र (या जो भी) को लॉन्च नहीं है यह कोड शामिल करने के लिए है: इस के साथ ऐसा
myWebView.setWebViewClient(new WebViewClient());
कोड, पुनर्निर्देशन "वेबदृश्य के भीतर" संभाला जाता है और मेरे पास लॉगिन स्क्रीन प्रदर्शित होती है।
मैं फिर क्रेडेंशियल्स दर्ज कर सकता हूं (उदाहरण के लिए: ट्विटर के माध्यम से oauth) लेकिन जब प्रमाणीकरण किया जाता है, तो कॉल बैक प्राप्त होता है लेकिन फिर कॉलबैक को संभालने वाली गतिविधि (अभिव्यक्ति में कॉलबैक प्राप्त करने के लिए कॉन्फ़िगर की गई एथएक्टिविटी) लॉन्च नहीं किया गया है इसके बजाए, मेरे पास एक संदेश प्रदर्शित करने वाला वेबव्यू है जिसमें कहा गया है कि यूआरएल कॉलबैक (हमारे मामले में: authprovider: // auth/XXX? Xxx = yyy जैसा कि मैनिफेस्ट में कॉन्फ़िगर किया गया है) नहीं मिला।
कारण यह है कि निम्नलिखित कोड हो सकता है:
myWebView.setWebViewClient(new WebViewClient());
पहले शुरू की, एंड्रॉयड बताता है कि वेबव्यू सब कुछ संभालती है। तो अब, चूंकि कॉलबैक यूआरएल एक वेब यूआरएल नहीं है, इसलिए इसे संभालने में परेशानी है और यह उस उद्देश्य को भी लॉन्च नहीं कर सकता है जो इसे संभाल सकता है।
प्रश्न
मैं इस समस्या को कैसे हल कर सकते हैं? मुझे गतिविधि को कॉलबैक को संभालने में सक्षम होना चाहिए, लेकिन वेबव्यू को इसे लोड करने की कोशिश न करें।
किसी भी मदद की सराहना की हो जाएगा अग्रिम में
धन्यवाद
मेरे पास 'खाता प्रबंधक' और 'एंड्रॉइड: लॉन्चमोड = "सिंगल इंस्टेंस" के साथ काम करने के लिए ओथ को एकीकृत करने का प्रयास करने का एक अलग मामला था। – d370urn3ur