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

2023-12-02

抱歉我的英语不好,我会尽力尽可能简单地解释我的问题。 我正在尝试制作一个与 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...”等等。但我没有看到此页面,因为立即重定向回应用程序。

问题是:我怎样才能获取并提取这部分:YYYYYYYYYYYYYY?

我非常抱歉我这么菜鸟,希望你能帮助我。提前致谢


你可以在onNewIntent中获取Uri。只需在您的 Activity 中覆盖它即可。您可以通过以下方式获取访问令牌:

@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];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从浏览器意图获取授权令牌? 的相关文章

随机推荐

  • D3 生成的 LinearGradient 在 Firefox/IE 中不起作用

    我正在开发一个 D3 库 它将 D3 与 AngularJS 指令集成在一起 称为角D3 最近的指令之一允许生成可以绑定到数据并动态更新的梯度 这似乎适用于除 Firefox 之外的所有浏览器 但是 如果我将输出 SVG 复制 粘贴到 JS
  • 在 Dialogflow 中使用 NodeMailer

    我想发送一封电子邮件 要求在 Dialogflow 中制作的程序中进行操作 我想使用 NodeMailer 但是当我部署项目时 出现以下错误消息 您的云函数部署失败 函数加载错误 无法加载文件index js 中的代码 您是否列出了所有必需
  • Java SQL 时间戳到 ZonedDateTime

    我想将 ZonedDateTime 对象转换为 java sql Timestamp 对象 而不使用本地日期 例如 假设我有以下日期时间 System out println myZonedDateTime gt 2018 09 02T23
  • ASP.NET PostBack 选择树视图的复选框

    我有一个 asp net 项目并使用 C 工作 在我的项目中 我有一个带有复选框的数据绑定列表框 例如 当用户单击复选框时 它应该更新标签 文本框 问题是 它不会更新标签 文本框 直到我单击执行回发的按钮 我将如何调用复选框更改事件的回发
  • OpenGL 顶点数组对象存储顶点缓冲区名称和索引,还是仅存储索引?

    创建后 VAO 是否仅跟踪 VBO 索引 通过glBindVertexBuffer 或者哪些 VBO 名称与这些索引绑定 如果我使用指定绑定索引 例如 0glVertexAttribBinding在 VAO 创建期间 我可以在绘制调用之前将
  • 类型错误:列表索引必须是整数,而不是元组,出了什么问题[重复]

    这个问题在这里已经有答案了 Python 新手 求助 为什么我收到此错误 类型错误 列表索引必须是整数 而不是元组 imheight for i in range 0 len tables for j in range 0 len tabl
  • 匿名内部类中的接口如何工作?

    interface MyInter public void display class OuterClass8 public static void main String arg MyInter mi new MyInter public
  • 无法让 Django 提供静态文件

    我知道 SO 上有很多类似的线程 实际上有同样的问题 但我无法解决我的问题 Django版本 gt gt gt import django gt gt gt print django get version 1 6 2 我想从模板访问静态文
  • 如何将 jQuery 事件处理程序附加到 YouTube 电影?

    编辑 对那些已经回答的人表示抱歉 在我睡眠不足的状态下 我忘记了这种特殊情况是 YouTube 电影 而不是 JW FLV 播放器 我可以看到有更多关于与 YouTube 电影交互的文档 所以我会继续研究 但也欢迎提供更多信息 我正在使用
  • while 循环确定输入的值是否为 double

    我正在做一个相当大的项目 这只是包含在其中 基本上 我创建了一个获取员工信息的类 我们需要它 以便用户必须输入双倍的工资率 说 8 点 注意用户不能添加美元符号 例如 8 00 否则会提示用户发生错误 然而 当我测试运行代码时 代码没有使用
  • 如何格式化 Ansible 输出

    我想格式化 Ansible 输出 my local SUCCESS rc 0 gt gt 116G my local2 SUCCESS rc 0 gt gt 116G to my local gt gt 116G my local2 gt
  • 服务器如何因 chmod 777 而变得容易受到攻击?

    我经常读到类似这样的文章 chmod 777 很糟糕 我想知道 当我执行时我如何变得脆弱chmod 777在一个文件上 我可以重现的真实世界示例是什么 It 允许文件系统内容查看和 或修改由任何人 假设攻击者已经具有通用系统访问权限 这在共
  • 如何在Python中以指定位数的二进制字符串形式返回数字

    可能是一个愚蠢的问题 但是在 python 中是否有一种简单的方法可以自动用零将数字填充到固定长度 我在 python 文档中找不到这个 但我可能还不够努力 e i 我希望 bin 4 返回 00100 而不仅仅是 100 是否有一种简单的
  • 确定 WPF RichTextBox 中选定的 InlineUIContainer

    我想确定 WPF RichTextBox 中当前插入符位置是否存在 InlineUIContainer 或 BlockUIContainer 目前我有一个 RichTextBox 如下
  • Message内部逻辑

    我试图找出其中的逻辑Message行为 考虑评估以下内容 On Sin 1 1 评估完以上内容后 您将得到大约 830 Messages in 数学 7 所有这些Messages在生产过程中出现了 Sin argx Sin called w
  • 正则表达式 - 匹配后面没有特定模式的字符

    我想要一个正则表达式 尽可能高效 因为我使用 C 并且引擎效率不高 来匹配任何包含 且不立即跟随的字符串 1 一个字母 a zA Z or 2 NUMBERS a zA Z or 3 数字 a zA Z 所以我想匹配这样的字符串 dsfdf
  • C++ 中的 fseek 函数会刷新缓冲区中的数据吗?

    我们知道 调用 fprintf 或 fwrite 等函数不会立即将数据写入磁盘 而是会缓冲数据直到达到阈值 我的问题是 如果我调用 fseek 函数 这些缓冲数据会在查找新位置之前写入磁盘吗 或者数据仍在缓冲区中 并写入新位置 cheng
  • Qt中线程间通信的实现

    我在实现以下场景时遇到问题 我的问题陈述是这样的 我有 3 个线程 ThreadCamera 用于从相机中抓取帧 用于处理帧的 ThreadProcess 使用 OpenCV 对捕获的图像 帧进行一些图像处理 和用于显示图像的主 GUI 线
  • 如何将图像源设置为哈巴狗模板中的变量?

    在创建电影信息平台时 我想打印图像海报 我无法将图像的来源设置为 pug 中的变量 each movie in movies col md 3 style margin bottom 20px text center img src mov
  • 如何从浏览器意图获取授权令牌?

    抱歉我的英语不好 我会尽力尽可能简单地解释我的问题 我正在尝试制作一个与 Yandex API 配合使用的应用程序 在他们的帮助页面上 我读到您应该从用户登录的应用程序启动浏览器 然后通过注册 URI 回调返回到应用程序 我现在拥有的 Ov