2016-10-26 167 views
1

我正在Android上構建REST客戶端以與Bitbucket API進行通信。 我遇到了OAUTH2.0的問題。Redirect_URI Android REST客戶端

  • docs由到位桶提供的,你必須爲了獲得客戶端ID(密鑰)和祕密使用 您的Android應用
  • 而在消費者創建窗體創建 「消費者」,有「回調網址」(我知道,作爲網頁或位置,Bitbucket將 拿到用戶後,他們已經完成了應用程序的權限 (即登錄)
  • 在我的Android應用程序,我想Android設備在用戶授予權限(例如您如何登錄網站)後返回到我的應用程序ITE與谷歌帳戶,在谷歌的許可頁面上的憑證填寫後,你被

    • 在添加此拍攝回到原來的頁面,你是上)

    tutorial I was following實現此活動在登錄發生在manifest.xml中

<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="redirecturi" android:scheme="your" /> </intent-filter>

  • 發送給到位桶

    private final String redirectUri = "your://redirecturi"; 
    
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_login); 
        Button loginButton = (Button) findViewById(R.id.loginbutton); 
        loginButton.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          Intent intent = new Intent(
            Intent.ACTION_VIEW, 
            //Uri.parse("" + "/login" + "?client_id=" + clientId + "&redirect_uri=" + redirectUri)); 
            Uri.parse("https://bitbucket.org/site/oauth2/authorize" + "?client_id=" + clientId + "&redirect_uri=" + redirectUri)); 
          startActivity(intent); 
         } 
        }); 
    } 
    

我的問題是: - 如何配置的到位桶消費對象,並在我的應用程序的請求重定向URI或回調URL,以確保機器人設備返回到我的應用程序,所以我的應用程序可以捕獲來自Bitbucket的響應(並且此響應應該具有我需要的access_token)。

回答

1

管理此問題的簡單方法是使用WebView,而不是通過意向打開您的OAuth鏈接。只要在WebView中重定向,您實際上可以檢查URL。要做到這一點,你必須覆蓋

公共布爾shouldOverrideUrlLoading(的WebView視圖,字符串URL)

每當你將被重定向到另一個鏈接(或在這種情況下,你的回調URI),您可以檢查或比較所獲得的網址並據此進行。

+0

謝謝。你能告訴我怎樣才能在我的特定情況下實現這一點? –

+0

查看這個[link](http://techblog.constantcontact.com/software-development/implementing-oauth2-0-in-an-android-app/) – Jordan

+0

給出的示例,首先獲取oauth標記使用webview,然後它用於向api發出請求並保存在共享首選項 – Jordan