Javascript Google+通过登录按钮登录:在不同页面上持久化会话和显示登录/注销按钮时出现问题
My page/login.php显示登录按钮并让您登录。到目前为止,我已设法: 在公共文件中包含相关代码,以便G+登录代码出现在所有页面中 将内容从按钮元素本身移动到标题中的标记 我没有在signinCallback中保留任何重要的逻辑,而是附加了一个回调函数,在每次页面加载时调用该函数,如下所示:Javascript Google+通过登录按钮登录:在不同页面上持久化会话和显示登录/注销按钮时出现问题,javascript,php,session,google-plus,Javascript,Php,Session,Google Plus,My page/login.php显示登录按钮并让您登录。到目前为止,我已设法: 在公共文件中包含相关代码,以便G+登录代码出现在所有页面中 将内容从按钮元素本身移动到标题中的标记 我没有在signinCallback中保留任何重要的逻辑,而是附加了一个回调函数,在每次页面加载时调用该函数,如下所示: function OnLoadCallback(){ var sessionParams = { 'client_id': 'myapp-id-here',
function OnLoadCallback(){
var sessionParams = {
'client_id': 'myapp-id-here',
'session_state': null
}
gapi.auth.checkSessionState(sessionParams, function(stateMatched){
if(stateMatched === true){
console.log("You do not seem to be logged in!");
}else{
console.log("You should be logged in!");
// Trigger request to get the email address.
gapi.client.load('plus','v1', loadProfile);
if(window.location.pathname === '/login.php'){
toggleElement('signin-button');
window.location = "/";
}
}
});
}
po.src=
然后,我使该函数如下所示:
function OnLoadCallback(){
var sessionParams = {
'client_id': 'myapp-id-here',
'session_state': null
}
gapi.auth.checkSessionState(sessionParams, function(stateMatched){
if(stateMatched === true){
console.log("You do not seem to be logged in!");
}else{
console.log("You should be logged in!");
// Trigger request to get the email address.
gapi.client.load('plus','v1', loadProfile);
if(window.location.pathname === '/login.php'){
toggleElement('signin-button');
window.location = "/";
}
}
});
}
我在一些文章中找到了关于会话状态的这段代码,但我不确定它是否能正常工作。在Chrome中,它似乎或多或少还行,但在FF中,当我第一次尝试它时,它应该会让我不登录控制台。因为我是用我的谷歌帐户登录FF的,但不是在我的应用程序中!,它似乎将我识别为已登录,或者至少我的会话不是代码中所述的null
那么,在确定会话状态时,我应该使用什么来代替null呢?由于我对这个Google API缺乏经验,我错误地认为应该在每次加载页面时调用一个特殊函数来检查用户状态。事实证明,将Google数据属性从“登录”按钮中移除,并将它们以基于页面配置的元标记的形式放置在跨页面包含的标题部分就足够了。现在,在signin/signout上应该发生的一切都可以在我的一个meta标记中定义的signinCallback方法中实现。很简单,这只适用于遇到相同问题时遇到困难的人。如果需要,请稍后参考: