抱歉我的英语不好,我会尽量解释我的问题。 我正在尝试创建一个适用于Yandex API的应用程序。在他们的帮助页面上,我已经读过你应该从用户登录的app启动浏览器,然后通过注册URI Callback返回应用程序。 我现在拥有的:
@Override
public void onClick(View view) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://oauth.yandex.ru/authorize?response_type=token&client_id=XXXXXXXXXXXXXXX"));
startActivity(browserIntent);
}
这将启动浏览器并重定向到授权页面。输入登录密码后,我会自动返回我的应用程序。这是AndroidManifest:
<activity
android:name="ru.mastergroosha.yaruclient.Main"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name="ru.mastergroosha.yaruclient.Window"
android:label="Window">
<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:scheme="yaruapp"
android:host="token"/>
</intent-filter>
</activity>
当我输入登录密码时,我被重定向到页面状态 “yaruapp:// token#access_token = YYYYYYYYYYYYYYY&amp; token_type = code ...”等等。但我没有看到此页面,因为立即重定向回应用程序。
问题是:如何获取和提取此部分:YYYYYYYYYYYYYYY?
我非常抱歉这么无趣,希望你能帮助我。提前致谢
答案 0 :(得分:4)
你可以在onNewIntent中获得Uri。只需在您的活动中覆盖它。您可以使用以下内容获取访问令牌:
@Override
protected void onNewIntent (Intent intent){
Uri uri = intent.getData();
if (uri!=null){
String mainPart = uri.toString().split("#")[1];
String[] arguments = mainPart.split["&"];
String argument = arguments[0];
String token = argument.split("=")[1];
}