重定向Android REST客户端的\u URI

重定向Android REST客户端的\u URI,android,rest,oauth-2.0,bitbucket-api,Android,Rest,Oauth 2.0,Bitbucket Api,我正在android上构建一个REST客户端,以便与Bitbucket API通信。 我对OAUTH2.0有问题 从Bitbucket提供的 “消费者”以获取客户端ID(密钥)和用于 你的android应用程序 在消费者创建表单中,有一个“回调URL”(我理解为Bitbucket将访问的网页或位置) 在用户完成对应用程序授予权限后,将其带到 (即登录) 在我的安卓应用程序中,我希望安卓设备在用户授予权限后返回到我的应用程序(例如,你如何使用谷歌帐户登录网站,在谷歌的权限页面上填写凭据后,你将被

我正在android上构建一个REST客户端,以便与Bitbucket API通信。 我对OAUTH2.0有问题

  • 从Bitbucket提供的 “消费者”以获取客户端ID(密钥)和用于 你的android应用程序
  • 在消费者创建表单中,有一个“回调URL”(我理解为Bitbucket将访问的网页或位置) 在用户完成对应用程序授予权限后,将其带到 (即登录)
  • 在我的安卓应用程序中,我希望安卓设备在用户授予权限后返回到我的应用程序(例如,你如何使用谷歌帐户登录网站,在谷歌的权限页面上填写凭据后,你将被带回到原来的页面)
政府通过以下方式实现这一点:

  • 将此添加到在manifest.xml中进行登录的活动中

  • 将此发送到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的响应(此响应应具有我需要的访问令牌).

一种简单的管理方法是使用
WebView
而不是通过意图操作OAuth链接。实际上,只要在WebView中重定向,您就可以检查url。为此,您必须覆盖

公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url)


当您被重定向到另一个链接时(或者在本例中是您的回调uri)您可以检查或比较所获得的url并进行相应的操作。

谢谢。您能告诉我在我的特殊情况下如何实现此功能吗?请查看此示例。首先,使用webview获取oauth令牌,然后将其用于向api发出请求,并保存在SharedReferences中。您可以找到更详细的解决方案。谢谢你的帮助。我自己找到了方法,不需要使用WebView,但我认为你的主意不错。