【问题标题】:Yammer javascript SDK logout issueYammer javascript SDK注销问题
【发布时间】:2014-06-26 15:55:43
【问题描述】:

我可以使用 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 时,登录状态会返回“未连接”。

【问题讨论】:

  • 我有同样的情况,内部回调永远无法到达。你有没有解决过?谢谢
  • 同样的问题,Jaap。

标签: yammer


【解决方案1】:

成功注销后,来自 yam.platform.logout 的响应似乎为“假”,因此您可以尝试“if(response == false)”,甚至不使用 if 语句..

【讨论】:

    【解决方案2】:

    我也面临同样的问题。很难相信这个问题在 2018 年仍然存在!我又挖了一点,发现在用户授权应用程序后,Yammer 服务器发送一个 cookie,该 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");
                }});
    
              });
    
          }
        );
        });
    

    这里#yammer-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 并将其重定向回登录页面。由于会话现在未设置 - 我再次看到登录页面!一切顺利!

    因此,下一次用户单击#yammer-login DOM 元素时 - 会话被设置并且她被重定向到仪表板(这次没有授权应用程序)!

    希望这对将来像我一样面临这个问题的人有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-26
      相关资源
      最近更新 更多