Получение пользовательских данных приложения в API Graph v2 с использованием глобальных идентификаторов

Таким образом, во второй версии графического 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 ради таких вещей.


person Tesserex    schedule 25.06.2014    source источник
comment
Какой вызов API вы выполняете и какой токен доступа используете?   -  person WizKid    schedule 26.06.2014


Ответы (1)


Вы правы, говоря, что-

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

Но это неверно: но v2 API также запрещает получать пользовательские данные с глобальными идентификаторами. Вызов графа с глобальными идентификаторами из приложения на основе холста приводит к исключению, в котором говорится, что вместо этого следует использовать идентификатор приложения.

Конечно, вы получите пользовательские данные с идентификатором, возвращаемым v2 API (будь то глобальный идентификатор или идентификатор приложения).

Извините, но я не очень понимаю синтаксис SDK, который вы использовали (мне не нравится использовать SDK), но я уверен, что это сработает. Вы даже можете проверить это в Graph API Explorer, просто выберите свое приложение. из раскрывающегося списка (верхний-средний) и вызовите /v2/{user-id} пользователя v1, и это даст вам результат. Вы, должно быть, делаете что-то не так в своем коде.

person Sahil Mittal    schedule 26.06.2014