如何从Android中的浏览器接收URL?

时间:2016-01-23 11:03:53

标签: android oauth-2.0

我想通过标准浏览器执行OAuth2授权过程。 像这样:

static public class Helper extends Activity {

    private static final int OAUTH2_CODE = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Uri uri = Uri.parse("my url");
        startActivityForResult(intent, OAUTH2_CODE);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == OAUTH2_CODE) {
            accessToken = getAccessToken(data); // method to get access token
        }
    }
}

当调用方法startActivityForResult时,启动浏览器并执行授权。在此之后调用方法onActivityResult,但我在方法null中收到onActivityResult而不是某些数据。

我在intent-filer中使用AndroidManifest.xml来处理成功案例中的浏览器重定向,但我想使用startActivityForResultonActivityResult

1 个答案:

答案 0 :(得分:1)

简而言之,这是不可能的。

OAuth2背后的整个想法是这个回调,你的默认浏览器不知道如何处理回调数据。

它必须正确接收URI,解析数据,然后将数据返回给您的应用程序 - 您应该自己做的事情。

将会发生重定向URI,如果您的组件上的意图过滤器与组件匹配,则会启动。  根据您的选择架构,您必须在onNewIntentonCreate / onResume处理这些回调结果。