我想通过标准浏览器执行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
来处理成功案例中的浏览器重定向,但我想使用startActivityForResult
和onActivityResult
。
答案 0 :(得分:1)
简而言之,这是不可能的。
OAuth2背后的整个想法是这个回调,你的默认浏览器不知道如何处理回调数据。
它必须正确接收URI,解析数据,然后将数据返回给您的应用程序 - 您应该自己做的事情。
将会发生重定向URI,如果您的组件上的意图过滤器与组件匹配,则会启动。
根据您的选择架构,您必须在onNewIntent
或onCreate
/ onResume
处理这些回调结果。