Facebook Connect / phonegap - параметр nativeInterface в вызове FB.init, что он делает? - PullRequest
3 голосов
/ 14 октября 2011

Так что я безуспешно пытался запустить пример Facebook Connect для PhoneGap / Android.https://github.com/davejohnson/phonegap-plugin-facebook-connect *

Есть несколько похожих тем с такой же проблемой. Вывод таков: «Facebook SDK - движущаяся точка»

Я успешно скомпилировал ранее приложения, используя phoneGap &Затмение.Теперь следуем примеру * для Android.Если я делаю именно то, что они предлагают.Приложение показывает кнопки, но когда я нажимаю на них, ничего не происходит.

После анализа кода я заметил, что

function initFB(){
try {
    FB.init({ appId: "45253452345234523", nativeInterface: PG.FB });
    document.getElementById('data').innerHTML = "";
  } catch (e) {
    alert(e);
  }
}

есть параметр nativeInterface: PG.FB, который нигде не описан вAPI Facebook для этого вызова .. http://developers.facebook.com/docs/reference/javascript/FB.init/

Что еще интереснее, так это то, что когда я удаляю этот параметр ... внезапно кнопка входа в систему переходит на страницу Facebook с кодом ошибки API 191.

Так что мойвопрос в том, что этот параметр должен делать?и почему его нет в Facebook API?

Я не нашел информации об этом параметре в интернете.Я полагаю, что если это будет устаревший API FB, будет доступна некоторая информация.

Есть идеи?

Спасибо,

Марцин

1 Ответ

6 голосов
/ 07 ноября 2011

Параметр «nativeInterface: PG.FB» указывает PhoneGap использовать собственный интерфейс аутентификации вместо мобильного веб-интерфейса. Если вы не добавите опцию «PG.FB», вы будете перенаправлены на мобильную аутентификацию Facebook. Мне потребовалось некоторое время, чтобы понять это, и это не очень хорошо задокументировано, но это то, что происходит.

Две вещи о плагине PhoneGap Facebook, которые не соответствуют последней версии Facebook JavaScript SDK:

  1. При использовании FB.login () вы должны использовать параметр "scope", но PhoneGap ожидает устаревший параметр "perms".
  2. При ответе аутентификации от FB.login () вы должны получать «response.authResponse», но вместо этого «response.session» - это то, что возвращается. Это означает, что вам придется извлечь токен доступа OAuth с помощью «response.session.auth_token» вместо «response.authResponse.accessToken».

Надеюсь, они получат обновление плагина PhoneGap Facebook, но сейчас я использую операторы if / else, чтобы определить, есть ли PhoneGap. Вы можете проверить, инициализирован ли PhoneGap, используя:

if (window.PhoneGap) {
// Библиотека PhoneGap загружена
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...