我可以使用yam.platform.login成功登录,但是当我打电话
时 yam.getLoginStatus(
function (response) {
if (response.authResponse) {
yam.platform.logout(function (response) {
if (response) {
alert("logout success");
}
})
}
}
);
永远不会达到内部回调函数。人们知道发生了什么吗?
编辑:可能与问题有关的另一个奇怪的行为:在上面的注销函数调用之后,登录状态仍然是"已连接"我在Chrome中检查了yammer.com的所有Cookie都被删除了。但是,当我手动要求Chrome删除Cookie时,登录状态将返回"未连接"。答案 0 :(得分:0)
来自yam.platform.logout的回复似乎" false"成功注销后,您可以尝试" if(response == false)"甚至没有if声明..
答案 1 :(得分:0)
我也面临同样的问题。很难相信这个问题在2018年仍然存在!我挖了一点,发现在用户授权应用程序后,Yammer服务器发送一个cookie,存储在某个地方的浏览器中(没有绑定到会话),yam.platform.logout
无法删除这个cookie(理想情况下应该!)
但是我发现了一个很好的解决方法,它对我来说很有效。
以下是登录页面中的JS:
$("#yammer-login").click(function(){
console.log("clicked");
yam.getLoginStatus(
function(resp) {
yam.platform.login(function (response) { //prompt user to login and authorize your app, as necessary
if (response.authResponse) {
console.dir(response); //print user information to the console
alert("login success");
}
$.ajax({
type:"POST",
url:"/setSession",
data:JSON.stringify(response,null,'\t'),
contentType:"application/json;charset=UTF-8",
success: function(result){
alert("Result from setSession is: "+result);
window.location.replace("/login");
}});
});
}
);
});
此处#amammer-login是登录元素的ID
<h2 class="sign-in">
<center>
Sign-in With Yammer
<br><br>
<span id="yammer-login">Click</span>
</center>
</h2>
这是我的工作流程:
登录页面上的JS向setSession发送POST请求并设置会话。执行window.location.replace("/login");
会向我的服务器发送一个GET请求/login
url。现在,会话已设置,我的服务器会将此请求重定向到仪表板。点击仪表板上的注销按钮后。我清除所有会话cookie并将其重定向回登录页面。由于会话现在未设置 - 我再次看到登录页面!一切顺利!
因此,下次用户点击#amammer-login DOM元素时 - 会话被设置并且她被重定向到仪表板(这次没有授权应用程序)!
希望这有助于将来像我一样面对这个问题的人!