提问者:小点点

如何强制Google API/OAUTH同意屏幕?


我有一个Chrome扩展,在清单中包含了驱动器API。在安装时,当用户打开Google文档时,后台。js弹出同意屏幕,以获得用户访问其谷歌硬盘的权限。

这在安装时工作良好。但是,如果用户将应用程序从驱动器中删除,代码不会再次弹出同意屏幕-它只会获取一个令牌,然后尝试驱动器,只会得到一个401错误。

我原以为如果授权不被授予,身份验证电话会突然同意。。。

显然,如果用户删除了你的应用程序,你不应该继续请求许可,这是必然的——我现在只想处理最简单的情况。

我的一些用户从未看到同意页面,或者看到并关闭了它...并且没有再次提示。

显示:

"oauth2": {
        "client_id": "xxxxxxxxxx-smaehlat7c66p1ns6t90ssj3jmlrrecm.apps.googleusercontent.com",
        "scopes": [
            "https://www.googleapis.com/auth/userinfo.email",
        "https://www.googleapis.com/auth/userinfo.profile",
            "https://www.googleapis.com/auth/drive.readonly"
      ]
  },

Background.js:

googleFileID = getIdFromUrl(activeURL);

chrome.identity.getAuthToken({ 'interactive': true }, function(token) {

  console.log('In Chrome Identity and obtained token: ' + token);

  $.ajax({
    type: "GET",
    beforeSend: function(request) {
      request.setRequestHeader("Authorization", "Bearer " + token);
    },
    url: "https://www.googleapis.com/drive/v3/files/" + googleFileID + "?fields=owners",
    dataType: 'json',
    processData: true,
    success: function(gDocsMeta1) {
      // DO STUFF

GoogleAPI控制台:我已经设置了API,可以看到流量,尽管我的流量中有10%是错误,我认为这与上述问题有关。

我使用Google Firebase进行用户身份验证...虽然我的一些用户选择谷歌身份验证来创建帐户,但许多人使用电子邮件注册。这个问题困扰着两种类型的注册。

感谢您的帮助!


共1个答案

匿名用户

当您收到401错误作为响应时,您必须使用chrome从缓存中删除无效令牌。身份在调用chrome之前,请删除cachedauthToken({token:oldToken})。身份getAuthToken({interactive:true}…)再次。