单击按钮启动 Google 登录
Posted
技术标签:
【中文标题】单击按钮启动 Google 登录【英文标题】:Initiate Google sign in on button click 【发布时间】:2015-12-13 22:47:24 【问题描述】:您好,我正在使用 google api 登录我的网络应用程序。现在它工作正常。但问题是当我进入我的登录页面时 sigin 会自动启动。但我不想那样。我希望用户先单击登录按钮,然后该过程将开始。
我正在使用下面的按钮
<div class="g-signin2" data-onsuccess="onSignIn"></div>
和google log in 参考。
【问题讨论】:
您添加了Sign Out Button
。几个月前我尝试使用google-signin
,效果很好。我猜您在尝试此操作时已登录到您的 Google 帐户。如果是这种情况,您应该先注销然后尝试。
正如我所说,它适用于我当前的流程。但我不希望用户在之前登录时自动登录。我想在用户单击按钮时开始流程。如果在任何情况下,当他被重定向到登录或退出的登录页面时,他将不得不再次单击登录按钮:)。我在后端使用弹簧安全,所以我的要求有点奇怪,但就是这样:(。@thegauravmahawar
这只是一个“可能”,但是如果你可以在什么时候调用sign out function
;正如您所说-“..我想在用户单击按钮时开始流程”。那么当用户单击按钮时,您是否可以先调用sign out function
。我从未尝试过,所以这只是一个猜测。无论如何让我知道:)
这是个好主意,如果用户登录,我将注销用户@thegauravmahawar 让我试试
我已尝试注销。但似乎没有错误,但用户没有退出@thegauravmahawar
【参考方案1】:
使用“attachClickHandler”启动 Google 登录。
<script src="https://apis.google.com/js/client:platform.js?onload=init" async defer></script>
<script>
function init()
gapi.load('auth2', function()
auth2 = gapi.auth2.init(
client_id: '*************.apps.googleusercontent.com',
cookiepolicy: 'single_host_origin',
scope: 'profile email'
);
element = document.getElementById('glogin');
auth2.attachClickHandler(element, , onSignUp, onFailure);
);
function onSignUp(googleUser)
var profile = googleUser.getBasicProfile();
</script>
【讨论】:
感谢分享!以下是attachClickHandler
上的官方文档,供其他可能好奇的人参考:developers.google.com/identity/sign-in/web/…
能否通过添加为 glogin 创建 google 按钮的代码来完成示例【参考方案2】:
据我所知,最好的方法是使用 Java Script 登录 google。
使用
script type="text/javascript">
(function()
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/client.js?onload=onLoadCallback';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
)();
</script>
初始化 js 。最后调用下面的方法来登录用户
function login()
var myParams =
'clientid' : 'YOUR_CLIENT_ID.apps.googleusercontent.com', //You need to set client id
'cookiepolicy' : 'single_host_origin',
'callback' : 'loginCallback', //callback function
'approvalprompt':'force',
'scope' : 'https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.profile.emails.read'
;
gapi.auth.signIn(myParams);
通过使用它,我能够解决这个问题。现在用户需要点击登录才能登录
【讨论】:
你能告诉我如何通过这个过程获取谷歌数据吗?我正在使用回调函数获取数据,但我收到此错误“未找到名为“onGoogleLoginSuccess”的回调函数”。 @NayyarJamal loginCallback 在此处提供您的方法名称,该方法将使用所有值调用,这意味着您的函数错误或无法从此页面访问您的函数 嗨,abdullah,你能分享谷歌登录的完整代码吗? @hey 对不起,我忘记了该 ID 的密码:/ 现在我正在使用这个以上是关于单击按钮启动 Google 登录的主要内容,如果未能解决你的问题,请参考以下文章
使用firebase google身份验证单击登录按钮时总是会自动登录,而没有选择以其他用户身份登录的选项