如何强制使用Google API / OAUTH许可屏幕?

时间:2018-02-07 12:41:18

标签: firebase google-chrome-extension google-drive-api google-oauth

我有一个Chrome扩展程序,在清单中包含Drive API。在安装时,当用户打开Goog​​le文档时,background.js会弹出同意屏幕以获得用户访问其Google云端硬盘的权限。

这在安装时工作正常。但是,如果用户从驱动器中删除了应用程序,则代码不会再次弹出同意屏幕 - 它只会获取一个令牌并尝试仅驱动器获取401错误。

如果没有授权,我会认为auth电话会弹出同意......

显然,如果用户删除了您的应用,您不应该继续寻求许可 - 我现在只是想处理最简单的情况。

我的一些用户从未看过同意页面,或者看过它并关闭它......并且不会再次提示。

清单:

"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

Google API控制台: 我已经设置了API并且可以查看流量​​,但我的流量中有10%是错误,我将其归因于上述问题。

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

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

当您收到401错误作为回复时,您必须先使用chrome.identity.removeCachedAuthToken({token:oldToken})从缓存中删除无效令牌,然后再次调用chrome.identity.getAuthToken({interactive: true} ...)