我正在尝试将 Facebook oAuth 与我的 Phonegap 2.3.0 应用程序集成,以便我可以发布到用户的墙上。我可以从这里使用该库:Phonegap oauth进行了一些修改,以说明现在称为 InAppBrowser 的子浏览器和核心 Phonegap 的一部分 - 见下文。
function FBConnect()
{
this.facebookkey = 'facebook';
this.childBrowser = null;
}
FBConnect.prototype.connect = function(options)
{
this.client_id = options.consumerKey;
this.client_secret = options.consumerSecret
this.redirect_uri = options.callbackUrl;
oauth = OAuth(options);
var authorize_url = "https://m.facebook.com/dialog/oauth?";
authorize_url += "client_id=" + this.client_id;
authorize_url += "&redirect_uri=" + this.redirect_uri;
authorize_url += "&display=touch";
authorize_url += "&response_type=token";
authorize_url += "&type=user_agent";
authorize_url += "&scope=email,read_stream,publish_stream";
var self = this;
self.childBrowser = window.open(authorize_url, '_blank', 'location=no');
self.childBrowser.addEventListener('loadstart', function(event){ console.log('event fired: '+event);self.onLocationChange(event.url);});
}
FBConnect.prototype.onLocationChange = function(loc)
{
console.log("onLocationChange : " + loc);
// If user hit "No, thanks" when asked to authorize access
if (loc.indexOf("login_success.html?error_reason=user_denied") >= 0) {
this.childBrowser.close();
return;
}
// here we get the code
if (loc.indexOf("access_token") >= 0) {
var access_token = loc.match(/access_token=(.*)$/)[1];
console.log("facebook token" + access_token);
window.localStorage.setItem(window.plugins.fbConnect.facebookkey, access_token);
this.childBrowser.close();
this.onConnect();
}
}
我可以打开 InAppBrowser 将用户发送到授权页面。用户首先使用他们的 Facebook 帐户登录,然后看到应用程序页面,当他们单击确定时,他们就可以授予访问权限,然后是权限屏幕。然后用户授予我的应用程序权限,然后发送到 callbackUrl 设置为:http://www.facebook.com/connect/login_success.html。但是,在这个阶段,我希望将令牌作为查询参数附加到 URL。URL 中没有任何内容。
我错过了什么吗?