Расшифруйте токен доступа Facebook на iPhone для использования на странице PHP - PullRequest
1 голос
/ 16 декабря 2010

Я использую новейший Facebook iPhone SDK, который использует аутентификацию OAuth, и у меня почти все работает, кроме одной части. Я создал сессию на iPhone, и я хотел бы продолжить эту сессию на php-сервере для дальнейшей обработки (например, получения высоких оценок друзей человека). В старом iPhone SDK все, что вам нужно было сделать, это передать сеанс из приложения iPhone на страницу PHP, и вы можете перейти оттуда.

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

Я столько всего перепробовал и у меня заканчиваются идеи. Я правильно подхожу к этому? Или мне нужно идти совсем другим путем?

Спасибо, Джастин

1 Ответ

1 голос
/ 17 декабря 2010

Теперь у меня работает токен доступа iPhone Facebook, когда я использую его напрямую для доступа к API Graph из кода нашего сервера. Я полагаю, что закодированное развертывание маркера доступа iPhone не было выполнено за одну атомарную операцию.

EDIT:

Вот что происходит с токеном iPhone между извлечением из QueryString и получением из него данных Facebook:

string facebookAccessToken = Request.QueryString["code"]; </p> <pre><code>//Remove any & on the end (like &expires=) as these prevent the login working //Note that the iPhone token does not contain any & symbols int ampersandLocation = facebookAccessToken.IndexOf( "&" ); if( ampersandLocation >= 0 ) { facebookAccessToken = facebookAccessToken.Substring( 0, ampersandLocation ); } loginFacebookInfo.facebookApi = new Facebook.FacebookAPI(facebookAccessToken); JSONObject me = loginFacebookInfo.facebookApi.Get("/me");

Конструктор FacebookAPI не делает ничего, кроме хранения необработанного токена доступа.

Последний звонок на facebookApi.Get ("/ me"); просто отправляет запрос GET на этот URL:

https://graph.facebook.com/me?access_token=<iPhone access token>

и успешно.

Обратите внимание, что доступ осуществляется через https, а не через http - и я уверен, что вызов http не удастся.

Нет никаких вызовов oAUTH и нет кода для обмена ключами сеанса для токенов доступа - это просто работает.

Надеюсь, это поможет.

Ура, Пол

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