我正在使用C#来获取FB令牌。所以,一旦我将用户重定向到此链接:
https://graph.facebook.com/oauth/authorize?........
它打开一个新页面而不是弹出窗口(FB javascript SDK,我试图避免)。
该查询中有'display = popup',它不起作用。我也试过'window.open(...),
但是有些浏览器会使用阻止程序阻止此类弹出窗口...
有没有办法打开一个原创的Facebook弹出窗口,然后回到C#代码后面做所有的魔术......?
答案 0 :(得分:0)
有一个单独的页面来管理Facebook登录。从主页面打开相同的内容
window.open(“”../ Helper / FBLoginMgr.aspx?login = fb“,”_ blank“,”height = 900,width = 800,menubar = 0,resizable = 1,scrollbars = 1,status = 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}";
...
初始查询字符串参数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();
}
});