Android 如何从浏览器获取授权令牌?

Android 如何从浏览器获取授权令牌?,android,oauth,authorization,Android,Oauth,Authorization,对不起,我的英语不好,我会尽量简单地解释我的问题。 我正在尝试制作一个应用程序,它与Yandex API一起工作。在他们的帮助页面上,我读到你们应该从用户登录的应用程序启动浏览器,然后通过注册URI回调返回应用程序。 我现在所拥有的: @Override public void onClick(View view) { Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://oauth.yandex.

对不起,我的英语不好,我会尽量简单地解释我的问题。 我正在尝试制作一个应用程序,它与Yandex API一起工作。在他们的帮助页面上,我读到你们应该从用户登录的应用程序启动浏览器,然后通过注册URI回调返回应用程序。 我现在所拥有的:

 @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&token_type=code...“等等。但我没有看到此页面,因为已立即重定向回应用程序

问题是:如何获取和提取此部分:yyyyyyyyyyy?


我很抱歉这么无礼,希望你能帮助我。提前感谢

您可以在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];
}

您可以在Wintent中获取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];
}