我在我的网站上实施了Google+登录功能,但功能有限。在初始授权时,登录流程在我所知的最佳状态下正常工作(我不确定对Google的双重GET请求是否正常,但验证是否正常)。在immediate_failed
之后,我点击了登录按钮,Google用OAuth令牌,一次性使用代码等返回了一个对象。在继续之前,我应该澄清一下,记录的对象只是Google返回的authResult
。Google+登录始终在Chrome浏览器中运行,但在IE和FF版本中仍然无法运行。
不过,我已经签署,并至少一次,以确认它可以工作(比OAuth凭证的时间却少)一个不确定的时间后,经过通常情况下,FF开始行为奇怪。在登录一段时间后发生下面的错误(不确定它是否会在我退出时发生)。
不管我做什么,无论是登录或注销,谷歌始终返回error="user_signed_out"
对象(以及调用我的回调函数两次)。正如你所看到的,点击登录按钮后,谷歌确实给了我一个成功的对象,但立即返回一个不成功的对象。
这一直持续下去,直到我撤销Google的访问权限并重新授权我的应用。冲洗并重复,没有失败。但是,Chrome并非如此。每次测试,Google都会返回一个成功的对象,除非我已经退出。 IE是一个有趣的例子:它像FF中一样调用我的回调两次,并且每个调用返回相同的error="user_signed_out"
。当我点击登录按钮时,IE收到来自Google的成功对象(单数),并且不会再输出任何内容,但页面刷新将一切都恢复到原来的状态。
现在,一些代码示例。也许我忽略了一些东西。
插入到我的网页的头:
function signinCallback(authResult) {
console.log(authResult); // The thing that's outputting all the unfortunate debugging data
if(authResult['status']['signed_in']) {
$.ajax({
data: {
code: authResult['code']
},
type: "POST",
url:"/authentication/gplus"
}).done(function() {
// Hide the button, change the menu, etc.
//window.setTimeout(logout(), authResult['expires_in']*1000);
//^Auto-logout. Attempt to test if errors were from invalid OAuth tokens, but not the case. Is, in fact, broken, as the logout function is called immediately (don't know why).
});
} else {
// Show the button, menu, etc.
}
}
function logout() { // Call logout script back on the server to unset session variables
$.ajax({
url:"/authentication/gplus/logout"
});
gapi.auth.logout();
}
在/authentication/gplus
的PHP很大程度上遵循谷歌API客户端库PHP中的示例。这是相当长的,我相信这与这个问题无关,因为错误是在JavaScript中(我测试了没有PHP的应用程序,同样的问题仍然存在),所以我不会发布它。
我的脚本包含的内容与Google documentation显示的完全相同,而且我不认为这与我的问题有关。我的符号按钮呈现相似。
我希望我的问题很清楚。什么? Chrome应该是一个可以工作的人(毕竟这是一个Googly过程),但是FF和IE正在发生什么?这是我的问题,还是谷歌问题(我怀疑我,但不知道)?这里也有类似的问题,但这似乎是其中许多问题的集合,而我发现的问题或者没有任何答案或解决方案对我不起作用。
特别感谢您的宝贵时间,如果您已阅读过此篇文章。我对我的问题的长度表示歉意,但我想说清楚。
当您不从其他浏览器之一交错登录时,您是否遇到过这种情况?或者只有在登录到其他浏览器后从其他浏览器之一登录后才会发生这种情况? – 2014-08-31 21:58:27
假设您在询问在多个浏览器中登录到网站时是否发生错误。不,因为我在FF中做了我的主要测试。一旦我注意到这个错误,我会在其他浏览器中测试它,到那个时候,根据谷歌的说法,我已经“退出”了。 – Will 2014-08-31 22:01:25
谢谢,@愿意。这是我唯一的假设。然后,我会留下回答这个问题给这个问题的专家。 – 2014-08-31 22:03:06