2013-05-03 113 views
3

這是我想要從用戶授權我的應用程序的問題。 這個API提供了我的OAuth 2.0流程從瀏覽器獲取重定向的URL - Android

我有一個包含我的應用程序鍵的鏈接「A」和我的重定向鏈接

如。當在瀏覽器中打開http://www.apiprovider?api-key=MY_API_KEY&redirect=REDIRECT_LINK

鏈路A詢問用戶的用戶名和密碼,並授權我的應用程序,成功授權後,用戶會被重定向到REDIRECT_LINK

REDIRECT_LINK進行編碼,這是我需要存儲的關鍵在變量中

例如。 https://www.twitter.com/some_profilekey=Asc545AS454dS44as

我不想讓用戶訪問重定向鏈接,我只是想獲取網址,然後關閉瀏覽器的頁面不應該打開

我已經使用這個代碼在瀏覽器中

Intent httpIntent = new Intent(Intent.ACTION_VIEW); 
      httpIntent.setData(Uri.parse("LINK_A")); 
      startActivity(httpIntent); 
+0

不會在瀏覽器中打開它,使用的WebView。或者,製作一個HttpGet並檢索Location-Redirect標題。 – njzk2 2013-05-03 07:49:54

+0

我無法使用HttpGet,因爲在用戶輸入有效的用戶名和密碼後發生重定向,並且必須向用戶顯示頁面(鏈接A)。它不能發生在後端。 – user1910290 2013-05-03 07:53:24

+0

好的。一個webview,然後。 – njzk2 2013-05-03 08:21:29

回答

1

打開鏈接:如果您打開的WebView您的網頁,你的應用程序可以偵聽與shouldOverrideUrlLoading()回調URL的任何變化。

如果你喜歡打開股票瀏覽器,你就可以開始,將定期輪詢最新網址服務:當你發現url您的預期變化相匹配

String lastDate = "0"; 
… 
String newDate = Long.toString(Calendar.getInstance().getTimeInMillis()); 
Cursor cursor = context.getContentResolver().query(
    Browser.BOOKMARKS_URI, 
    Browser.HISTORY_PROJECTION, 
    Browser.BookmarkColumns.DATE + " IS NOT NULL AND " + Browser.BookmarkColumns.DATE + " > ?", 
    lastDate, 
    Browser.BookmarkColumns.DATE + " DESC"); 
if (cursor.moveToNext()) { 
    String url = cursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX); 
} 
cursor.close(); 

lastDate = newDate; // update the timestamp 

,你可以切換到你的活動並繼續在您的應用程序的上下文中。

從最終用戶的POV中關閉瀏覽器是可能的,但它可能不禮貌。想象一下,例如,她有5個打開的標籤,包含重要信息,所有這些都被銷燬!

注意,此方法can be used爲Chrome瀏覽器,具有略微不同的內容提供商:內容://com.android.chrome.browser/bookmarks