Google+ 对比 Google 身份平台 API
Google+ vs Google Identity Platform API
tl;dr: 有人可以解释一下在这两个平台之间实现客户端 Google 登录流程的确切区别吗?
背景故事:
我一直在尝试实施客户端 Google 登录我的网站。首先,我使用标签实现了具有全局设置的 Google+ 平台,因此用户会话受到监控。在此处获取信息:https://developers.google.com/+/web/signin/
但是,我遇到了一个问题,如果用户未登录,站点会自动检查用户登录状态,这导致 'Logged out' 的许多 'toastr' 消息,我在signInCallback 函数。挺烦人的。
所以我做了一些研究,偶然发现了他们的 'quick start app' 并浏览了它。它比他们的指南复杂得多,许多元素都记录在 Google Identity Platform 上,这里:
https://developers.google.com/identity/sign-in/web/reference
现在我真的不明白什么是实现他们登录的正确方法 - 是轻量级 Google+ 带有标签回调检查用户状态的按钮,还是带有监听器的健壮的 GIP 方式,gapi实例和所有?这些平台提供了哪些不同之处?
Google+ 平台登录 (gapi.auth) 和身份平台 (gapi.auth2) 都是相关的,并且工作方式相似。
两者的主要区别是:
gapi.auth2 支持更现代的 JavaScript (listeners and promises) 所以你可以这样做:
var signinChanged = function (val) {
console.log('Signin state changed to ', val);
document.getElementById('signed-in-cell').innerText = val;
};
auth2.isSignedIn.listen(signinChanged);
...auth2 具有更明确的语法,可让您更好地控制行为:
gapi.load('auth2', function() {
auth2 = gapi.auth2.init({
client_id: 'CLIENT_ID.apps.googleusercontent.com',
fetch_basic_profile: true,
scope: 'profile'
});
// Sign the user in, and then retrieve their ID.
auth2.signIn().then(function() {
console.log(auth2.currentUser.get().getId());
});
});
并且 auth2 提供基本配置文件支持,无需额外的 API 调用:
if (auth2.isSignedIn.get()) {
var profile = auth2.currentUser.get().getBasicProfile();
console.log('ID: ' + profile.getId());
console.log('Name: ' + profile.getName());
console.log('Image URL: ' + profile.getImageUrl());
console.log('Email: ' + profile.getEmail());
}
简而言之,我建议使用 https://developers.google.com/identity/sign-in/, such as https://developers.google.com/identity/sign-in/web/ 中记录的方法。
正确实现登录将取决于您想要的登录类型:
- 仅客户端,您可以只使用 JavaScript/iOS/Android 客户端
- 混合客户端-服务器身份验证,您将需要实施类似于快速入门之一的内容
如果您只使用客户端,那么应该非常简单:您授权用户,然后使用 API 客户端访问资源。如果您正在做更复杂的事情,例如管理会话等,您应该使用来自 API 客户端的 ID 令牌在使用授权码授权您的服务器后授权用户的会话。
tl;dr: 有人可以解释一下在这两个平台之间实现客户端 Google 登录流程的确切区别吗?
背景故事:
我一直在尝试实施客户端 Google 登录我的网站。首先,我使用标签实现了具有全局设置的 Google+ 平台,因此用户会话受到监控。在此处获取信息:https://developers.google.com/+/web/signin/
但是,我遇到了一个问题,如果用户未登录,站点会自动检查用户登录状态,这导致 'Logged out' 的许多 'toastr' 消息,我在signInCallback 函数。挺烦人的。
所以我做了一些研究,偶然发现了他们的 'quick start app' 并浏览了它。它比他们的指南复杂得多,许多元素都记录在 Google Identity Platform 上,这里: https://developers.google.com/identity/sign-in/web/reference
现在我真的不明白什么是实现他们登录的正确方法 - 是轻量级 Google+ 带有标签回调检查用户状态的按钮,还是带有监听器的健壮的 GIP 方式,gapi实例和所有?这些平台提供了哪些不同之处?
Google+ 平台登录 (gapi.auth) 和身份平台 (gapi.auth2) 都是相关的,并且工作方式相似。
两者的主要区别是:
gapi.auth2 支持更现代的 JavaScript (listeners and promises) 所以你可以这样做:
var signinChanged = function (val) {
console.log('Signin state changed to ', val);
document.getElementById('signed-in-cell').innerText = val;
};
auth2.isSignedIn.listen(signinChanged);
...auth2 具有更明确的语法,可让您更好地控制行为:
gapi.load('auth2', function() {
auth2 = gapi.auth2.init({
client_id: 'CLIENT_ID.apps.googleusercontent.com',
fetch_basic_profile: true,
scope: 'profile'
});
// Sign the user in, and then retrieve their ID.
auth2.signIn().then(function() {
console.log(auth2.currentUser.get().getId());
});
});
并且 auth2 提供基本配置文件支持,无需额外的 API 调用:
if (auth2.isSignedIn.get()) {
var profile = auth2.currentUser.get().getBasicProfile();
console.log('ID: ' + profile.getId());
console.log('Name: ' + profile.getName());
console.log('Image URL: ' + profile.getImageUrl());
console.log('Email: ' + profile.getEmail());
}
简而言之,我建议使用 https://developers.google.com/identity/sign-in/, such as https://developers.google.com/identity/sign-in/web/ 中记录的方法。
正确实现登录将取决于您想要的登录类型:
- 仅客户端,您可以只使用 JavaScript/iOS/Android 客户端
- 混合客户端-服务器身份验证,您将需要实施类似于快速入门之一的内容
如果您只使用客户端,那么应该非常简单:您授权用户,然后使用 API 客户端访问资源。如果您正在做更复杂的事情,例如管理会话等,您应该使用来自 API 客户端的 ID 令牌在使用授权码授权您的服务器后授权用户的会话。