我已经收到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的评论。
更新
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”。
已解决
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小组