微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Facebook oauth在新窗口中打开,而不是弹出窗口

如何解决Facebook oauth在新窗口中打开,而不是弹出窗口

| 我正在使用C#获取FB令牌。因此,一旦我将用户重定向到此链接: https://graph.facebook.com/oauth/authorize?........ 它会打开一个页面,而不是一个弹出窗口(我正在尝试避免使用FB javascript SDK)。 该查询中有\'display = popup \',这不起作用。我也试图\'window.open(...), 但是某些浏览器会使用阻止程序来阻止此类弹出窗口... 有没有办法打开原始的Facebook弹出窗口,然后返回C#代码背后做所有的魔术呢?     

解决方法

有一个单独的页面来管理Facebook登录。从主页打开相同的内容 window.open(\“ \” ../ Helper / FBLoginMgr.aspx?login = fb \“,\” _ blank \“,\” height = 900,width = 800,menubar = 0,resizable = 1,scrollbars = 1 ,状态= 0,标题栏= 0,工具栏= 0 \“); 在页面加载事件的FBLoginMgr.aspx中,您可以执行以下操作:
        if (Request[\"login\"] != null)
        {
            //First time
            url = \"https://graph.facebook.com/oauth/authorize?client_id={0}&redirect_uri={1}&scope=offline_access,read_stream,user_activities\";
            Response.Redirect(string.Format(url,app_id,redirect_url));
        }

        if (Request[\"code\"] != null)
        {
            //Second time
            url = \"https://graph.facebook.com/oauth/access_token?client_id={0}&redirect_uri={1}&client_secret={2}&code={3}\";
.. 初始querystring参数login = fb仅用于向Login mgr指示其已启动,并且需要启动Facebook授权。第二个Request [\“ code \”]是Facebook在用户授权后发布的参数。
Once the access token is retrieved,set a hidden variable to indicate that the job is done. Then in the aspx page you could have something like this:


    $(document).ready(function () {
        alert(\"Time to say good bye\");
        if (document.getElementById(\'<%=amidone.ClientID %>\').value == \"yes\") {
            window.parent.opener.doneWithLogin();//Indicate to the parent page
            window.close();
        }
    });
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。