适用于Android REST客户端的Redirect_URI

时间:2016-10-26 16:36:11

标签: android rest oauth-2.0 bitbucket-api

我正在android上构建一个REST客户端来与Bitbucket API进行通信。 我遇到了OAUTH2.0的问题。

  • 从Bitbucket提供的docs,您必须创建一个 “consumer”以获取ClientID(Key)和Secret来使用 你的Android应用程序
  • 在消费者创建表单中,有“回调网址”(我将其理解为Bitbucket的网页或位置) 在用户完成对应用程序的许可后,将用户带到 (即登录)
  • 在我的Android应用程序中,我希望Android设备在用户授予权限后返回我的应用程序(例如您如何使用Google帐户登录网站,在Google的权限页面上填写您的凭据后,您是回到原来的页面上)

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>

  • 发送给Bitbucket

    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);
            }
        });
    }
    

我的问题是: - 我如何在Bitbucket消费者对象和我的应用程序的请求中配置重定向URI或回调URL,以确保Android设备返回到我的应用程序,因此我的应用程序可以捕获来自Bitbucket的响应(并且此响应应该具有access_token,我“我需要的。”

1 个答案:

答案 0 :(得分:1)

管理此操作的一种简单方法是使用WebView,而不是通过意图打开您的OAuth链接。无论何时在WebView中重定向,都可以实际检查URL。为此,您必须覆盖

  

public boolean shouldOverrideUrlLoading(WebView view,String url)

每当您被重定向到另一个链接(或在这种情况下您的回调uri)时,您可以检查或比较获得的网址并相应地继续。