Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript yam.platform.getLoginStatus调用回调而不响应.user_Javascript_Angularjs_Yammer - Fatal编程技术网

Javascript yam.platform.getLoginStatus调用回调而不响应.user

Javascript yam.platform.getLoginStatus调用回调而不响应.user,javascript,angularjs,yammer,Javascript,Angularjs,Yammer,当我在使用yam.platform.login登录(显示弹出窗口等)后立即调用yam.platform.getLoginStatus时,我会收到一个与用户已登录时不同的对象传递到回调。具体来说,LoginStatus响应对象上缺少“user”字段,否则就我所见,它看起来是一样的 我的angular应用程序上的“使用yammer登录”区域有以下控制器: function YammerLoginController($scope, $compile) { $scope.isLoggedIn

当我在使用yam.platform.login登录(显示弹出窗口等)后立即调用yam.platform.getLoginStatus时,我会收到一个与用户已登录时不同的对象传递到回调。具体来说,LoginStatus响应对象上缺少“user”字段,否则就我所见,它看起来是一样的

我的angular应用程序上的“使用yammer登录”区域有以下控制器:

function YammerLoginController($scope, $compile) {

    $scope.isLoggedIn = false;
    $scope.userName = "-";
    $scope.login = function () {
        yam.platform.login(function (response) {
            if (response.authResponse) {
                console.log("logged in");
            }
            refreshLoginStatus();
        });
    }

    refreshLoginStatus(); // initialize values
    function refreshLoginStatus() {
        yam.getLoginStatus(function (response) {
            console.dir(response);
            if (response.authResponse) {
                if (response.user) {
                    console.log("YammerLogin: Logged in as " + response.user.full_name);
                    console.dir(response);
                    $scope.$apply(function () {
                        $scope.isLoggedIn = true;
                        $scope.userName = response.user.full_name;
                    });
                }
                else {
                    console.log("WTF Yammer API!"); // THIS HAPPENS.
                }
            }
            else {
                console.log("YammerLogin: Not logged in.");
                $('#loggedInView').popover("hide");
                $scope.$apply(function () {
                    $scope.isLoggedIn = false;
                    $scope.userName = "-";
                });
            }
        });
    }
创建控制器时,它已使用
refreshLoginStatus
功能查询当前登录状态。如果yammer用户已经登录,应用程序将在页面上显示用户名和注销按钮(使用ng show=“isLoggedIn”完成)。如果用户未登录,将显示登录按钮。当用户单击该登录按钮时,将调用
$scope.login
函数,调用
yam.platform.login
,如果成功,再次调用
refreshLoginStatus
,以检索和设置用户名。在此场景中,从
login
getLoginStatus
返回的对象不包含“用户已登录”场景中的用户信息。我尝试在超时后再次调用SDK-API,但显然响应是缓存的——我总是得到相同的结果。只有刷新整个页面才能清除当前响应,再次查询状态并接收“完整”响应对象

我原以为这可能是一个范围问题,但现在我不确定这是否是SDK本身的问题

编辑:我找到了一个解决方案,但这只会给我带来更糟糕的问题。显然,请求确实被缓存了。可以在
yam.platform.getLoginStatus(回调,[forceRefresh])
上使用“强制刷新”强制刷新。但是,这在浏览器控制台上给了我以下错误:

无法加载XMLHttpRequest . 请求的服务器上不存在“Access Control Allow Origin”标头 资源。因此,不允许使用源“” 进入


基本上,SDK无法完全获取LoginStatus,并将其作为“无连接”报告给我的代码。我不知道更糟的是什么。。。或者,我做错了什么?

这似乎只是yam.platform.getLoginStatus API或调用的相应Yammer服务中的不一致。如果用户登录,您将获得用户信息,如果他已经登录,您将无法获得该信息。这很奇怪,但显然没办法

然而,我解决了这个问题,只要在会话通过身份验证后(从getLoginStatus获得令牌后),总是使用单独的REST服务调用获取用户登录数据