0

每个人,

我们有一个 Phonegap 应用程序,用于 Facebook 集成,打开一个浏览器窗口,传递登录 URL(以及所有权限请求等)并等待位置成为login_success.html#access_token=[Token]

但是,在某些设备上,我们得到正确的令牌,而在某些设备上,我们得到/login_success.html#\_=\_ response.

注意:这因设备而异,而且根本不稳定。

发生这种情况有什么原因吗?我们在 iOS 5 和 iOS 6(5.1.1 和 6.1.2、6.1.3)上都有多台设备,其中一些运行良好,而另一些则存在此问题。我们已经尝试过移除应用程序和其他事情(但没有尝试重置设备),我们在某些设备上遇到了稳定的问题,而在其他设备上没有问题。

4

1 回答 1

1

对于使用 facebook,我这样做:

function facebookLogin() {
ref = window.open('https://www.facebook.com/dialog/oauth?client_id=YOURID&redirect_uri=https://www.facebook.com/connect/login_success.html&response_type=token', '_blank');
ref.addEventListener('loadstart', function(event){ manageLoadstart(event)});}

function manageLoadstart(event) {
if (event.url.indexOf('https://www.facebook.com/connect/login_success.html#') !== -1) {
    var charIndex = event.url.indexOf('&');
    var firstExtraction = event.url.substring(charIndex);
    var newUrl = event.url.replace(firstExtraction, '');
    var startUrl = newUrl.substr(0, 65);
    var accessToken = newUrl.replace(startUrl, '');
    saveFacebookToken(accessToken);
    ref.close();
}}

我将它与 phonegap 2.6.0 一起使用。loadstop 事件不起作用。所以它会在 manageloadstart 中运行 3 次,并且每次都检查 url。

于 2013-04-23T17:04:47.020 回答