Таким образом, во второй версии графического API Facebook представлены идентификаторы для конкретных приложений, чтобы защитить конфиденциальность пользователей от спама или чего-то подобного. Но они сказали, что пользователи, которые добавили ваше приложение в версии 1, используя глобальный идентификатор, будут продолжать отправлять вам свои глобальные идентификаторы в версии 2, чтобы обеспечить обратную совместимость вашего приложения.
Это все хорошо, но v2 API также запрещает получать пользовательские данные с глобальными идентификаторами. Вызов графа с глобальными идентификаторами из приложения на основе холста приводит к исключению, в котором говорится, что вместо этого следует использовать идентификатор, специфичный для приложения.
Я тут как-то в растерянности. Я пытаюсь получить основную информацию о случайном подмножестве пользователей моего приложения для отображения текущему пользователю, который не обязательно является другом. Но у большинства моих пользователей есть глобальные идентификаторы, хранящиеся в моей базе данных, потому что они присоединились давным-давно. Кажется, что если бы мое приложение было новым, все идентификаторы, хранящиеся в моей базе данных, были бы специфичными для приложения, и поэтому я мог бы получить их информацию. Это указывает мне на то, что Facebook не намерен запрещать мне получать данные, которые я хочу. Для меня это просто невозможно из-за неудачной ситуации со старым приложением.
Есть ли способ получить эти данные? Я знаю, что могу вернуться к версии 1 графика, но она исчезнет 30 апреля 2015 года. Мне нужна только самая основная информация, и я показываю только имена.
Я использую версию 4 PHP SDK. Мой запрос выглядит так:
(new FacebookRequest(
self::$session, 'GET', '',
array('ids' => implode(',', $userIds))
))->execute()->getGraphObjectList(GraphUser::className());
Мой сеанс происходит от вызова getSession
на FacebookCanvasLoginHelper
, как показано в их документах, поэтому у меня есть новый токен доступа и подписанный запрос.
редактировать
Итак, я отменяю свой вопрос, потому что я тупой. Сахил прав. Моя проблема заключалась в том, что я работаю в отдельном приложении для тестирования (не официальное тестовое приложение, а приложение, которое я создал давным-давно для тестирования), поэтому рассматриваемые идентификаторы приложений фактически не добавили приложение, поэтому я могу не получить их информацию. Упс. Хорошая причина перейти на официальное тестовое приложение.
редактировать снова
Я отменяю свой вопрос. Фейсбук тупой. Я создал официальное тестовое приложение, привязанное к моему реальному приложению, и оно дает мне собственный идентификатор приложения, а не тот, который указан для основного приложения. Я проверяю страницу, с которой у меня были проблемы раньше, и то же исключение:
Facebook\FacebookAuthorizationException: The global ID 693041250 is not allowed.
Please use the application specific ID instead.
На странице разработчиков в тестовых приложениях говорится:
- Тестовые приложения используют то же пространство имен идентификаторов пользователей на уровне приложения, что и ваше рабочее приложение, что упрощает отладку проблем с идентификаторами на уровне приложения или в случаях, когда вы используете копию рабочей базы данных для разработки.
Это кажется в корне неверным. Я использую копию своей производственной базы данных. Я знаю свой идентификатор Facebook. Он даже не дал бы мой собственный идентификатор, который был предоставлен для производственного приложения, не говоря уже о чьем-либо еще. Эта новая вещь работает только для совершенно новых приложений или что-то в этом роде? На данный момент я готов отказаться от разработки Facebook ради таких вещей.