在我们的应用中,我们有一个简单的Google登录流程,其中会打开一个弹出窗口,用户登录并授予我们脱机访问Google Analytics(分析)的权限。
我们刚刚收到一封电子邮件,通知我们正在使用即将弃用的Google+ API(plus.people.getOpenIdConnect
方法),但是我们没有在代码中使用它。
我似乎无法弄清楚我们在哪里使用Google+ API,因此可以替换它。
这是我们的简单代码:
prepareGoogleClient() {
$.ajax({
url: "//apis.google.com/js/client:platform.js",
dataType: "script"
}).done(() => {
gapi.load("auth2", () => {
let auth = gapi.auth2.init({
client_id: ENV.googleClientId,
scope:
"https://www.googleapis.com/auth/analytics.readonly https://www.googleapis.com/auth/webmasters.readonly"
});
this.auth = auth;
});
if (gapi.auth2 && !this.auth) {
this.auth = gapi.auth2.getAuthInstance();
}
});
}
稍后我们调用this.auth.grantOfflineAccess(params)
,它将返回我们稍后保存的令牌。
如果我在Google平台仪表板中禁用了Google+ API,则登录会停止工作,并且弹出窗口会以登录错误作为响应。我还能够确认Google+ API(从其指标面板)确实在我们的用户登录弹出窗口并授予范围权限的过程中使用。
我该如何重写它以便不使用已弃用的plus.people.getOpenIdConnect
方法?
答案 0 :(得分:1)
问题出在处理OAuth2的Rails后端代码中。过时的omniauth-google-oauth2
宝石正在使用已弃用的Google+端点。
答案 1 :(得分:-1)
我认为每个在其应用中使用Google+ API的人都收到了该邮件。 不知道这是否有帮助,但这是从Google API的网站获得的。
Google+登录功能已被弃用,并且还将 将于2019年3月7日关闭。开发人员应迁移到更多 全面的Google登录身份验证系统。
https://developers.google.com/+/web/api/javascript
https://developers.google.com/+/integrations-shutdown
其他参考文献:
将Google登录添加到您的Web应用
function onSignIn(googleUser) {
// Useful data for your client-side scripts:
var profile=googleUser.getBasicProfile();
console.log("ID: " + profile.getId()); // Don't send this directly to your server!
console.log('Full Name: ' + profile.getName());
console.log('Given Name: ' + profile.getGivenName());
console.log('Family Name: ' + profile.getFamilyName());
console.log("Image URL: " + profile.getImageUrl());
console.log("Email: "+profile.getEmail());
// The ID token you need to pass to your backend:
var id_token=googleUser.getAuthResponse().id_token;
console.log("ID Token: "+id_token);
}
<html lang="en">
<head>
<meta name="google-signin-scope" content="profile email">
<meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com">
<script src="https://apis.google.com/js/platform.js" async defer></script>
</head>
<body>
<div class="g-signin2" data-onsuccess="onSignIn" data-theme="dark"></div>
</body>
</html>