Плагин Phonegap facebook: не работает, когда установлено собственное приложение FB

Я использовал Cordova-2.5.0 и facebook-sdk 3.0.2 в плагине fb. Он отлично работает, когда на устройстве не установлено собственное приложение. когда установлено собственное приложение, ничего не происходит. Это означает, что он не может получить текущий токен доступа пользователя. Есть идеи? Как по мне есть два пути:

1) отключить, чтобы получить доступ к собственному приложению, как в ios. Но это не так, как если бы пользователь уже вошел в систему в родном режиме, тогда ему нужно снова войти в систему в моей настройке плагина.

2) не знаю, как решить эту проблему. Нет проблем с хеш-ключом, так как он правильный и хорошо работает в ios, используя мой первый способ.

Итак, мой вопрос в том, как предотвратить доступ к собственному приложению? ИЛИ Есть ли другой способ решить эту проблему?

Как я ничего не получаю. когда я собираюсь получить список друзей пользователя, он показывает, что токен активного доступа должен использоваться для запроса информации о текущем пользователе.,"type":"OAuthException","code":2500.

cdv-pluggin-fb-connect.js

 CDV = ( typeof CDV == 'undefined' ? {} : CDV );
var cordova = window.cordova || window.Cordova;
CDV.FB = {
  init: function(apiKey, fail) {
    // create the fb-root element if it doesn't exist
    if (!document.getElementById('fb-root')) {
      var elem = document.createElement('div');
      elem.id = 'fb-root';
      document.body.appendChild(elem);
    }
    cordova.exec(function() {
    var authResponse = JSON.parse(localStorage.getItem('cdv_fb_session') || '{"expiresIn":0}');
    if (authResponse && authResponse.expirationTime) {
      var nowTime = (new Date()).getTime();
      if (authResponse.expirationTime > nowTime) {
        // Update expires in information
        updatedExpiresIn = Math.floor((authResponse.expirationTime - nowTime) / 1000);
        authResponse.expiresIn = updatedExpiresIn;

        localStorage.setItem('cdv_fb_session', JSON.stringify(authResponse));
        FB.Auth.setAuthResponse(authResponse, 'connected');
       }
      }
      console.log('Cordova Facebook Connect plugin initialized successfully.');
    }, (fail?fail:null), 'org.apache.cordova.facebook.Connect', 'init', [apiKey]);
  },
  login: function(params, cb, fail) {
    params = params || { scope: '' };
    cordova.exec(function(e) { // login
        if (e.authResponse && e.authResponse.expiresIn) {
          var expirationTime = e.authResponse.expiresIn === 0
          ? 0
          : (new Date()).getTime() + e.authResponse.expiresIn * 1000;
          e.authResponse.expirationTime = expirationTime;
        }
        localStorage.setItem('cdv_fb_session', JSON.stringify(e.authResponse));
        FB.Auth.setAuthResponse(e.authResponse, 'connected');
        if (cb) cb(e);
    }, (fail?fail:null), 'org.apache.cordova.facebook.Connect', 'login', params.scope.split(',') );
  },
  logout: function(cb, fail) {
    cordova.exec(function(e) {
      localStorage.removeItem('cdv_fb_session');
      FB.Auth.setAuthResponse(null, 'notConnected');
      if (cb) cb(e);
    }, (fail?fail:null), 'org.apache.cordova.facebook.Connect', 'logout', []);
  },
  getLoginStatus: function(cb, fail) {
    cordova.exec(function(e) {
      if (cb) cb(e);
    }, (fail?fail:null), 'org.apache.cordova.facebook.Connect', 'getLoginStatus', []);
  },
  dialog: function(params, cb, fail) {
    cordova.exec(function(e) { // login
      if (cb) cb(e);
                  }, (fail?fail:null), 'org.apache.cordova.facebook.Connect', 'showDialog', [params] );
  }
};

Заранее спасибо!!


person Bhoomika Brahmbhatt    schedule 18.07.2013    source источник


Ответы (1)


Мне удалось заставить его работать с этим плагином: https://github.com/jimzim/phonegap-facebook-android-sample

person user1716672    schedule 15.10.2013