Javascript Twitter登录弹出窗口被阻止

Javascript Twitter登录弹出窗口被阻止,javascript,angularjs,twitter,popup,Javascript,Angularjs,Twitter,Popup,我在我的angularjs网站上有一个twitter认证。我遇到的问题是,当我按下“使用twitter登录”时,应该会出现包含twitter登录内容的弹出窗口,但此弹出窗口被阻止。浏览谷歌没有给出任何有用的结果。下面是我的一些代码: HTML: <a ng-show="!user.twitterUserLogged" ng-click="TwitterLogIn()" ... > <i class="fa fa-twitter-square"></i><

我在我的angularjs网站上有一个twitter认证。我遇到的问题是,当我按下“使用twitter登录”时,应该会出现包含twitter登录内容的弹出窗口,但此弹出窗口被阻止。浏览谷歌没有给出任何有用的结果。下面是我的一些代码:

HTML:

<a ng-show="!user.twitterUserLogged" ng-click="TwitterLogIn()" ... >
<i class="fa fa-twitter-square"></i></a>
$scope.TwitterLogIn = function() {
        if(!$scope.user.twitterUserLogged){

            TwitterTweetManager.getToken().then(function(token) {
                $scope.user.TwitterToken = token;
                var url = 'https://api.twitter.com/oauth/authenticate?oauth_token=',
                    params = 'location=0,status=0,width=800,height=600';

                var twitter_window = window.open(url + $scope.user.TwitterToken.oauth_token,"twitter_window",params);

                //if (twitter_window) {
                    var interval = window.setInterval(function() {
                        if (twitter_window.closed) {
                            window.clearInterval(interval);
                            $scope.TwitterLoginFinish();
                        }
                    }, 1000);
                //}

            });

        }

    };
谢谢大家!


找到有关window.open()函数的一些信息。是真的吗?弹出窗口阻止程序只允许onClick事件?因为在我的情况下,我有ng点击。这可能是问题的核心吗?

我找到了问题所在。这是关于我的ng click上的异步事件。我在点击事件中从服务器获取令牌,在这种情况下,弹出窗口拦截器将阻止您的弹出窗口。所以现在我在我的活动之前得到一个令牌,如下所示:

var TwitterToken = TwitterTweetManager.getToken().$object;
和我的点击事件:

$scope.TwitterLogIn = function() {
        if(!$scope.user.twitterUserLogged && TwitterToken){
                $scope.user.TwitterToken = TwitterToken;
                var url = 'https://api.twitter.com/oauth/authenticate?oauth_token=',
                    params = 'location=0,status=0,width=800,height=600';

                var twitter_window = window.open(url + $scope.user.TwitterToken.oauth_token,"twitter_window",params);

                var interval = window.setInterval(function() {
                    if (twitter_window.closed) {
                        window.clearInterval(interval);
                        $scope.TwitterLoginFinish();
                    }
                }, 1000);
        }
    };