如果我的代码没有对Google+的可见引用,那么Google+ OAuth关闭会不会对我造成影响?

时间:2019-01-30 09:51:50

标签: google-apps-script oauth-2.0 google-api google-plus google-oauth2

我已经收到Google的一封电子邮件,警告我我的Google App脚本项目将受到即将到来的2019年1月28日至2019年3月7日Google+ API关闭的影响。

  

您好Google+开发者

     

以下电子邮件包含您最近使用的Google+ API。注意:它包括Google+ OAuth范围请求,也受Google+关闭的影响。先前发送给活动API调用者的电子邮件不包含有关OAuth请求的信息。最后一封提醒电子邮件将在2月发送给仍处于活动的API或OAuth请求活动的用户。

     

我需要知道什么?   在2019年3月7日,所有Google+ API和Google+登录将完全关闭。这将是逐步关闭,API调用最早会在2019年1月28日开始间歇性地失败,而Google+作用域的OAuth请求早在2019年2月15日就开始间歇性地失败。

     

我该怎么办?   请在2019年3月7日之前更新下面列出的项目,并确保它们不再使用Google+ API或请求Google+ OAuth范围。以下数据显示了您的项目最近调用了哪些Google+ API方法,以及其请求的Google+ OAuth范围。   注意:如果看到对people.get的呼叫,则可能是由于在应用程序中使用了Google+登录功能导致的,该功能现已被弃用,并且已被关闭。开发人员应从Google+登录功能迁移到更全面的Google登录身份验证系统。

该电子邮件明确表明了我的项目中的故障,并提供了以下位置详细信息:

Project...............:My_GAS_Project_Name  
Google+ API Name......:OAuth    
Version...............:N/A
Method or OAuth Scope.:plus.me

但是我认为这是一个误报。

我正在使用OAuth API,但未使用Google+ API。我搜索了以下字符串;我的代码中的“加号”和“ +”号在任何地方都找不到引用*。

*是的,到处都是“ +”,但是每个人都被视为字符串连接操作。

这是项目中的OAuth函数:

function _getAuthenticationToken_() {
  // Check we have access to the service
  var service = getService();
  if (!service.hasAccess()) {
    var authorizationUrl = service.getAuthorizationUrl();
    _log_('INFO', 'Open the following URL and re-run the script: ' + authorizationUrl);
    return;
  }

  Logger.log('Passed Authentication');

  //Get the Access Token
  return service.getAccessToken();

  function getService() {
    // Create a new service with the given name. The name will be used when
    // persisting the authorized token, so ensure it is unique within the
    // scope of the property store.
    return OAuth2.createService('jlr-edw-dev-service')

    // Set the endpoint URLs, which are the same for all Google services.
    .setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth')
    .setTokenUrl('https://accounts.google.com/o/oauth2/token')

    // Set the client ID and secret, from the Google Developers Console.
    .setClientId(CLIENT_ID)
    .setClientSecret(CLIENT_SECRET)

    // Set the name of the callback function in the script referenced
    // above that should be invoked to complete the OAuth flow.
    .setCallbackFunction('authCallback')

    // Set the property store where authorized tokens should be persisted.
    .setPropertyStore(PropertiesService.getUserProperties())

    // Set the scopes to request (space-separated for Google services).
    // this is admin access for the sqlservice and access to the cloud-platform:
    .setScope(
      'https://www.googleapis.com/auth/sqlservice.admin ' + 
      'https://www.googleapis.com/auth/cloud-platform')

    //Removed because this Should be covered by cloud-platform
    //'https://www.googleapis.com/auth/devstorage.read_write ' 

    // Below are Google-specific OAuth2 parameters.

    // Sets the login hint, which will prevent the account chooser screen
    // from being shown to users logged in with multiple accounts.
    .setParam('login_hint', Session.getActiveUser().getEmail())

    // Requests offline access.
    .setParam('access_type', 'offline')

    // Forces the approval prompt every time. This is useful for testing,
    // but not desirable in a production application.
    .setParam('approval_prompt', 'force');
  }

  function authCallback(request) {
    var cloudSQLService = getService();
    var isAuthorized = cloudSQLService.handleCallback(request);

    if (isAuthorized) {
      _log_('INFO', 'Access Approved');
      return HtmlService.createHtmlOutput('Success! You can close this tab.');
    } else {
      _log_('INFO', 'Access Denied');
      return HtmlService.createHtmlOutput('Denied. You can close this tab');
    }
  }
}

我应该忽略来自Google的警告,还是可以检查以确认这些项目没有风险?

我还应该补充说,这些项目是通过Google App Script Execution API公开的,其功能是通过Java program based on the the Google example执行的。仅标记以这种方式访问​​的项目。

更多详细信息是为回应DaImTo的评论。

在项目资源中打开的唯一库是OAuth: enter image description here

Google+ API和People API均已关闭: enter image description here

该项目的API仪表板也不包含Google+: enter image description here

更新

我想我可能知道现在发生了什么。下图说明了这些组件。 enter image description here

1)这些是从用于执行Google App脚本的Java程序中提取的范围。它们包括范围“ https://www.googleapis.com/auth/userinfo.email”。

2)这是Google OAuth2 API, v2范围文档。

3)这些是授予Google App Script项目的范围。根据描述性名称,看起来好像已包含“ plus.me”,即“知道您在Google上的身份= https://www.googleapis.com/auth/plus.me”。

因此由于某种原因,在请求访问“ https://www.googleapis.com/auth/userinfo.email”时,请求被扩展为包括“ https://www.googleapis.com/auth/plus.me”。我认为可能是因为“ described here”已弃用“ serinfo.email”。

enter image description here

已解决

Google的进一步沟通表明,这确实是误报,不需要更改代码。

  

亲爱的开发人员,

     

本周早些时候,我们向您发送了一封与您的项目相关的电子邮件,这将受到Google+ API关闭的影响,这也会影响对Google+ OAuth范围的请求。

     

该电子邮件列出了您的一个或多个项目正在请求“ plus.me”范围,因此将受到影响。我们想澄清的是,只有直接请求“ plus.me”范围的项目会受到影响。即使您的项目没有直接要求,此范围可能已在某些电子邮件中列出。对于造成的任何混乱,我们深表歉意。

     

如果您直接请求“ plus.me”范围,任何其他Google+ OAuth范围或进行任何Google+ API调用,请确保在2019年3月7日之前从您的项目中删除这些请求。

     

要查看您的项目是否直接请求“ plus.me”或任何其他Google+ OAuth范围:

     

•如果您的项目是使用Google Apps脚本编写的,则可以通过在App脚本编辑器中查看项目属性来查看项目要求的范围。

     

•如果您的项目不是用Google Apps脚本编写的,请检查您的代码以获取OAuth范围请求中对“ plus.me”的引用。我们建议您使用任何支持登录或社交功能的第三方库来检查项目,因为这些库也可能会受到关闭的影响。

     

感谢您成为有价值的Google+开发者。

     

此致,   Google+ API小组

1 个答案:

答案 0 :(得分:2)

我认为您应该在Google Developer Console中签入。确保您尚未在项目中启用google + api。这可能导致了误报。

enter image description here

那是我唯一能想到的。即使这是一个代码问题,谷歌实际上并没有访问开发人员代码的权限,他们也不会去扫描每个脚本来发出警告。