Регистрация и публикация достижений Facebook из приложения iOS

У меня есть приложение для iOS в App Store, в котором есть достижения Game Center. Поскольку у него также есть работающая реализация Facebook Connect, я хотел бы использовать социальные каналы, доступные через новые API-интерфейсы Achievements Graph, с моими приложениями.

Я создал соответствующие страницы достижений, готовые для регистрации в Facebook в качестве достижений для моего приложения. Из того, что я прочитал, поскольку токен авторизации приложения должен использоваться для отправки достижений и результатов, я делаю все это на своем сервере, используя некоторые PHP-скрипты, поэтому мне не нужно отправлять свой секретный ключ с двоичными файлами моего приложения. . Я планирую, чтобы мое приложение для iOS вызывало скрипт на моем сервере при отправке достижений или результатов.

Я использую то же приложение FB, что и для собственного приложения iOS. Очевидно, я хочу, чтобы он начал генерировать истории и события временной шкалы, когда пользователь открывает достижения или достигает нового рекорда.

Однако я сталкиваюсь с большим камнем преткновения при попытке зарегистрировать достижения для приложения FB. Я получаю следующую ошибку со сценарием, который выполняет регистрацию:

OAuthException: (#15) This method is not supported for native apps

Вроде все делаю правильно, отправляю POST в /<appid>/achievements API с URL для достижений и т.д.

Чтобы обойти ограничения Facebook на эти API, я также разрешил существующему мобильному приложению быть «Веб-сайтом» и «Приложением на Facebook» в настройках разработчика. Но безрезультатно.

Итак, мой вопрос: я что-то упустил, чтобы включить достижения, которые можно было бы отправить из приложения iOS через промежуточный сервер? Я не возражаю против настройки страниц холста и т. д., если это необходимо, но я бы не хотел, чтобы пользователи повторно аутентифицировались как совершенно отдельное приложение только для того, чтобы они могли публиковать достижения и баллы в своем потоке Facebook.

Чего я пытаюсь добиться, так это в лучшем случае запросить у пользователя дополнительные разрешения для существующего приложения на его устройствах, если это необходимо. Должна быть возможность запустить скрипт на моем сервере, который при необходимости будет отправлять достижения на Facebook, но как?

Единственный способ сделать это — использовать отдельное приложение FB, которое вообще не установлено как родное мобильное приложение, или это может быть комбинация родного/веб-приложения?


person megastep    schedule 19.04.2012    source источник


Ответы (1)


Это означает, что вы, вероятно, настроили свое приложение на стороне Facebook как «Родной/рабочий стол», а не как «веб».

В этой конфигурации секрет вашего приложения ненадежен, поскольку предполагается, что вы отправили его с клиентским кодом — нет никаких причин, по которым ваше приложение IOS не будет работать в «веб-режиме», поэтому используйте его вместо этого.

(Я предполагаю, что вы на самом деле не отправили секрет своего приложения в клиентский код - если у вас есть, это огромная проблема безопасности, если ваше приложение не установлено в «Родной/Рабочий стол»)

person Igy    schedule 20.04.2012
comment
Ну да, это нативное приложение, и это сделано намеренно. Я пытаюсь заставить его работать через свой облачный сервер (поэтому нет отправки секрета приложения в мобильное приложение), но использую те же учетные данные приложения FB, чтобы я мог сохранить существующий поток аутентификации для мобильных пользователей. - person megastep; 20.04.2012
comment
Хорошо, кажется, я понимаю, что ты имеешь в виду. Немного сбивает с толку тот факт, что на вкладке «Дополнительно» в дополнение к выбору на первой вкладке для типа приложения есть другой параметр. Когда я установил его в Интернет, я больше не получаю ошибок... Теперь мне нужно посмотреть, не сломается ли что-нибудь на стороне iOS, но мы делаем успехи! - person megastep; 20.04.2012