即使提供访问令牌后,Google 选择器仍要求登录

2024-01-11

首先,经过一些研究,我发现很多人都遇到过这个问题,但我没有找到任何具体的解决方案。说到这个问题,

客观的: 我想将谷歌驱动器与我的应用程序集成,以便用户可以从我的应用程序将文件上传到他们的驱动器。因此,用户首先必须将其驱动器与应用程序集成,然后使用谷歌选择器上传/导入文件。集成 Google 驱动器后,用户不应再次看到身份验证屏幕,而是直接单击按钮即可打开 Google 选择器.

执行: 在集成时,我在服务器端使用 OAuth2 并存储以下客户端凭据

   { 
     access_token: '',
     refresh_token: '',
     scope: 'https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/userinfo.email openid',
     token_type: 'Bearer',
     expiry_date: 1578194339897 
   }

现在在客户端,我正在获取相同的访问令牌并用于加载选择器

createPicker() {
        const { accessToken } = this.props.userInfo;
        const uploadView = new google.picker.DocsUploadView();
        var picker = new google.picker.PickerBuilder().
          addViewGroup(
            new google.picker.ViewGroup(google.picker.ViewId.DOCS).
            addView(google.picker.ViewId.DOCUMENTS).
            addView(google.picker.ViewId.PRESENTATIONS)
          ).
          addView(uploadView).
          setOAuthToken(accessToken). //access token fetched from server
          setDeveloperKey(developerKey).
          setCallback(this.pickerCallback).
          build();
        picker.setVisible(true);
}

Expected behaviour: Google picker should open on click of a button. enter image description here

我尝试使用登录选项来获取当前用户,但无法获取当前用户。 除此之外,我还尝试使用gapi进行客户端授权,但每次我尝试加载选择器时它也会要求身份验证屏幕

任何帮助表示赞赏。提前致谢。


当您最初集成谷歌驱动器时,您是否获得并保留了refresh_token?如果您没有看到refresh_token你需要添加prompt: 'consent'oauth 参数中的选项。

例如:

access_type: `offline`,
response_type: `code`,
prompt: 'consent'

然后,在打开选择器之前,您需要确保您的access_token未过期,如果过期,您可以使用以下命令刷新它refresh_token

https://developers.google.com/identity/protocols/oauth2/web-server#offline https://developers.google.com/identity/protocols/oauth2/web-server#offline

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

即使提供访问令牌后,Google 选择器仍要求登录 的相关文章

随机推荐

  • WooCommerce:验证我的帐户编辑页面上的自定义字段

    我已使用以下方式将自定义字段添加到我的 WooCommerce 注册中这个流程 https support woothemes com hc en us articles 203182373 How to add custom fields
  • 创建结构数组的最简单方法是什么?

    在 Cocoa 中创建结构数组的最简单方法是什么 如果你想使用 NSArray 你需要将你的结构装箱 您可以使用 NSValue 类对它们进行编码 像这样的编码 struct foo int bar struct foo foobar fo
  • F# 4 中的编译器错误?

    我有一些 F 4 0 源代码 可以在调试中正常编译 但在发布中则不行 没有条件定义 推断类型没有变化 我能想到的也没有其他东西可以向我解释这种差异 我真的偶然发现了编译器错误吗 这是有问题的代码片段 let oldItems userDis
  • Shapely 中两个几何体最近点的坐标

    有一条折线 其顶点坐标列表 x1 y1 x2 y2 x3 y3 和一个点 x y 在身材匀称中 geometry1 distance geometry2 返回两个几何图形之间的最短距离 gt gt gt from shapely geome
  • 将数据从 Excel 复制到记事本

    我使用以下命令将数据从 Excel 复制到记事本SendKeysExcel VBA 函数 我希望避免使用 sendkeys 我有这个代码 sub test dim wb as Workbook set wb C Documents test
  • 如何从 NSURLProtocol 内部获取请求 UIWebView

    我的应用程序使用 NSURLProtocol 的子类 应用程序中有多个 UIWebView 对于 NSURLProtocol 中实现的特定算法 我需要知道哪一个 UIWebView 发送请求 我的理解是 self client 返回的对象应
  • Shell 脚本 - Shell 变量不保留值

    bin bash while true do if eq 0 then result operand1 operand2 result operand1 operand2 result operand1 operand2 if result
  • 将列表元素追加到python中的列表列表中

    给出以下列表 list1 1 2 3 4 5 6 7 8 list2 10 11 12 13 最好的改变方式是什么list1所以它变成了Python中的以下列表 1 2 10 3 4 11 5 6 12 7 8 13 您可以使用zip x
  • anorm joda-time - 本地日期时间支持

    与 Anorm 2 5 2 SQL s insert into user name registered date values name registered date on name gt user name registered da
  • Hibernate Search - 如何默认列出所有记录

    我正在使用 Hibernate 搜索 我的 jsp 页面中有一个搜索文本框 如果我输入一些文本 它会返回正确的结果 但是 如果我留空消息并单击搜索按钮 它不会返回任何记录 Code Session session HibernateUtil
  • 将 COALESCE 与 Group by 结合使用

    我有一个表 其中包含如下数据 pid category name subcategoryname 424 Bathing Infant Care Baby Lotion 428 Bathing Infant Care Baby Lotion
  • QtWidgets.QFileDialog.getOpenFileName 返回一个元组

    我最近更新到了 Qt5 for Python 的新版本 在此过程中 我不得不根据发生的一些显着变化来更改我的代码 我想深入了解我创建的这行代码 这感觉像是一种肮脏的方式来解决获得一个问题的问题string代替tuple从函数 注意 0 在该
  • 嵌套 JSON:如何向对象添加(推送)新项目?

    我刚刚从数组 对象和 JSON 开始 所以希望我在这里忽略了一些简单的东西 我在尝试时遇到错误添加 推送 我的 json 对象中的一个新项目 我遇到以下错误 Result of expression library push undefin
  • 如何更改模式视图 iOS 6 上的状态栏

    我有以下星座 主视图 自定义 UIViewController 无导航控制器或导航栏 包含一个按钮 该按钮以模态方式连接到第二个表视图控制器 该控制器嵌入在导航控制器中 MainView gt 导航控制器 gt TableView 在 Ma
  • 生成后如何在expect shell脚本中获取子进程pid

    脚本的一部分a exp usr bin expect spawn ssh qTfnN D port user host expect assword 我怎样才能得到pid子进程 ssh 如果我在 bash shell 中执行这些 而不是在脚
  • 如何告诉 pyximport 使用 cython --cplus 选项?

    pyximport 非常方便 但我不知道如何让它使用 Cython 的 C 语言选项 从命令行运行cython cplus foo pyx 如何使用 pyximport 实现等效功能 谢谢 让 Cython 创建 C 文件的一种方法是使用
  • Javascript 对引用与值定义的变量的混淆

    我了解 javascript 语言的以下属性 var bar 1 var foo bar bar something entirely different foo is still 1 然而 当尝试将此逻辑应用于对象时 它的行为似乎有所不同
  • C 中变量的作用域与生命周期

    有人可以准确解释 C 中变量的范围和生命周期的概念吗 在 C 中是否有所不同 我对范围和生活感到困惑 变量的 范围 是源代码的一个区域 您可以在其中引用该变量 生命周期 是程序执行期间存在的时间 默认情况下 局部变量的生命周期与其作用域相同
  • 如何在 Twig 中调用“time_diff”过滤器

    我怎样才能调用 时间差 Twig 中的函数 The code post created at time diff Output The filter time diff does not exist 如果您使用 Symfony 2 并想使用
  • 即使提供访问令牌后,Google 选择器仍要求登录

    首先 经过一些研究 我发现很多人都遇到过这个问题 但我没有找到任何具体的解决方案 说到这个问题 客观的 我想将谷歌驱动器与我的应用程序集成 以便用户可以从我的应用程序将文件上传到他们的驱动器 因此 用户首先必须将其驱动器与应用程序集成 然后