等待 Javascript 中的重定向(facebook 访问令牌)

发布于 2024-12-23 14:20:21 字数 1206 浏览 4 评论 0原文

所以我试图从 facebook 获取访问令牌以与我的 firefox 插件一起使用,所以从 facebook 的角度来看我是一个桌面应用程序。

我最大的问题是检测到 .../login_success.html 的重定向,因为我不知道如何在不使 Firefox 崩溃的情况下做到这一点。

这是我最近的尝试:

function getAuthToken() {
        var app_id = 'MY ID';
        var redirect_uri = 'https://www.facebook.com/connect/login_success.html';
        var permissions = ['user_photos', 'friends_photos', 
                           'publish_stream', 'offline_access'];
        var url = 'https://www.facebook.com/dialog/oauth?' +
        'client_id=' + app_id + '&redirect_uri=' + redirect_uri + 
        '&scope=' + permissions.join(',') + '&response_type=token';

        window.open(url);

        while(true){
            if(window.onload)
                    if(compareURL(redirec_uri))
                        break;
        }

        var hashStr = window.location.hash.substring(1);

        var arr = hashStr.split('&');

        var accessToken = arr[0];

        return accessToken;
    }

    function compareURL(url)
    {
        if(window.location.href.substring(0, url.length) == url)
            return true;
        return false;
    }

还有其他方法来等待/检测重定向到login_success吗?

So I'm trying to get an access token from facebook to use with my firefox plugin, so from facebooks point of view I'm a desktop application.

My biggest problem is to detect the redirect to .../login_success.html as I don't know how to do that without crashing firefox.

That's my latest try:

function getAuthToken() {
        var app_id = 'MY ID';
        var redirect_uri = 'https://www.facebook.com/connect/login_success.html';
        var permissions = ['user_photos', 'friends_photos', 
                           'publish_stream', 'offline_access'];
        var url = 'https://www.facebook.com/dialog/oauth?' +
        'client_id=' + app_id + '&redirect_uri=' + redirect_uri + 
        '&scope=' + permissions.join(',') + '&response_type=token';

        window.open(url);

        while(true){
            if(window.onload)
                    if(compareURL(redirec_uri))
                        break;
        }

        var hashStr = window.location.hash.substring(1);

        var arr = hashStr.split('&');

        var accessToken = arr[0];

        return accessToken;
    }

    function compareURL(url)
    {
        if(window.location.href.substring(0, url.length) == url)
            return true;
        return false;
    }

Any other way to wait for/detect that redirect to login_success?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

请别遗忘我 2024-12-30 14:20:21

如果您的浏览器崩溃,可能是因为检测到“无限”循环并且页面变得无响应。也许你应该尝试

window.setInterval(function()
{
  // check your redirect url and so on
}, 1000);   

If your browser crashes, it might be because an "infinite" loop is detected and the page becomes unresponsive. Maybe you should try

window.setInterval(function()
{
  // check your redirect url and so on
}, 1000);   
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文