Я пытаюсь интегрировать 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 ничего нет.
Я что-то упускаю?