我尝试编写一个chrome扩展名,这是通过访问某个网站来触发的。到目前为止,这已经成功。我的分机用户来自我的网页游戏,他们使用自己的Facebook帐户登录。为了使用他们的游戏帐户识别扩展用户,我需要知道他们的fb app应用程序用户ID来自我的游戏。
到目前为止,我了解到我的后台脚本无法使用facebook sdk进行登录,因为window.fbAsyncInit并未在内部调用。我四处寻找解决方案,我找到了这个页面:http://brianmayer.com/2012/12/building-a-chrome-extension-that-connects-to-a-facebook-app/
他打开一个包含iframe的隐形标签。在iframe内部,他从网络服务器调用facebook登录sdk,然后将带有windows.postmessage的用户数据发送给父服务器。这听起来像是我问题的完美解决方案。只有一行我不明白我必须添加的内容:
parent.postMessage({connectStatus:"" + response.status + "", userID:"" + uid + "", accessToken:"" + at + ""}, "https://www.<PARENT_PAGE_DOMAIN>"); //This MUST match the root domain where the iFrame will be inserted, or the message won't get passed
我必须在PARENT_PAGE_DOMAIN字段中添加什么内容?我使用了清单文件中content_scripts / maches中页面的根域,我使用了托管iframe页面的域,但我从未在后台脚本中收到该消息
答案 0 :(得分:0)
你试过这个吗? enter link description here
chrome.identity.launchWebAuthFlow({
url: AUTH_URL,
interactive: true
}, function(redirectURL) {
if (chrome.runtime.lastError) {
alert(chrome.runtime.lastError.message);
}
if(redirectURL){
var q = redirectURL.substr(redirectURL.indexOf('#')+1);
var parts = q.split('&');
for (var i = 0; i < parts.length; i++) {
var kv = parts[i].split('=');
if (kv[0] == 'access_token') {
var token = kv[1];
console.log(token)
// do something...
}
}
}
});