Del*_*mas 10 javascript php oauth
我做谷歌连接让用户使用他们的谷歌帐户登录.
我做的是,创建一个按钮
<div class="g-signin2 social_signin" data-onsuccess="onSignIn"></div>
Run Code Online (Sandbox Code Playgroud)
然后创建onSignIn()
<script>
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("Name: " + profile.getName());
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);
};
</script>
Run Code Online (Sandbox Code Playgroud)
然后将该令牌发送到PHP服务器以进行验证并获取数据.这很好.
但我的问题是,当用户从我的网站注销时,谷歌会自动触发'onSignIn'而不点击我创建的按钮.因此,当用户注销时,用户会自动再次登录.
你能帮助我防止这种自动登录吗?或者我可以取消授权用户吗?
小智 10
只需添加onclick并创建clicked的全局变量(默认为false),并且该变量为true即可调用BasicProfile。
<div class="g-signin2 social_signin" onclick="ClickLogin()" data-onsuccess="onSignIn"></div>
<script>
var clicked=false;//Global Variable
function ClickLogin()
{
clicked=true;
}
function onSignIn(googleUser) {
if (clicked) {
profile = googleUser.getBasicProfile();
}
};
</script>
Run Code Online (Sandbox Code Playgroud)
于是终于想通了...
只需分配 onclick="gp_signOut();" 注销按钮
function gp_signOut() {
var auth2 = gapi.auth2.getAuthInstance();
auth2.signOut().then(function () {
console.log('User signed out.');
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2786 次 |
| 最近记录: |