Как использовать токен доступа OAuth, полученный с помощью Javascript, для аутентификации с помощью PHP

Я пишу расширение для Opera, и оно будет использовать API Twitter OAuth. Я знаю, что это не одобряется, но я реализую Twitter OAuth с Javascript внутри расширения. Пожалуйста, потерпите меня, потому что я не профессионал в OAuth.

Но вот что я хочу сделать. Как только пользователь пройдет аутентификацию в Twitter, я сохраню токен доступа в localStorage с объектом widget.preferences, доступным для расширений Opera. Вот часть, в которой я не уверен прямо сейчас. В расширении можно будет оставлять комментарии. Комментарий будет отправлен из расширения в скрипт на сервере, который обработает и вставит комментарий в таблицу в базе данных.

Теперь я хочу знать, как я могу быть уверен, что имя пользователя человека, опубликовавшего комментарий, является реальным именем пользователя, опубликовавшего комментарий и вошедшего в Твиттер в моем расширении?

Если бы я просто отправил имя пользователя из расширения, было бы очень легко просто манипулировать именем пользователя в запросе, что привело бы к вставке поддельного имени пользователя в базу данных с комментарием.

Я мог бы отправить токен доступа пользователя, опубликовавшего комментарий, из расширения, сервер получил бы его с данными комментария. Прежде чем вставлять комментарий в базу данных, могу ли я использовать токен доступа, отправленный из расширения Javascript, для получения с помощью PHP имени пользователя Twitter пользователя, представленного этим токеном доступа? Или токен доступа создается случайным образом каждый раз, когда пользователь аутентифицируется, поэтому его нельзя использовать повторно таким образом?


person alpenglow    schedule 02.03.2012    source источник


Ответы (1)


OAuth Echo – это стандартный способ проверки подлинности Twitter через API.

Основной поток будет:

  1. Расширение подписывает запрос account/verify_credentials, но не отправляет его в Twitter.
  2. Расширение отправляет подписанный запрос на сервер.
  3. Сервер делает запрос в Twitter. Если это удается и возвращает screen_name, вы знаете, кто это.
person abraham    schedule 03.03.2012
comment
Отлично, я думаю, это то, что я хочу! Как я могу подписать, но не отправить запрос в Twitter? Я использую библиотеку jsOAuth. Должен ли я использовать метод setAccessToken()? Или, что еще лучше, знаете ли вы статью, которая наглядно демонстрирует эту технику? - person alpenglow; 03.03.2012
comment
Я никогда не использовал jsOAuth, поэтому мало чем могу помочь, но это выглядит так: toSignatureBaseString создаст подписанную подпись. - person abraham; 03.03.2012
comment
toSignatureBaseString создаст только базовую строку подписи. Однако возьмите эту строку и отправьте ее методу OAuth.signatureMethod[HMAC-SHA1] вместе с секретами, и все готово. Вероятно, вы можете пропустить токен доступа. - person Jon Nylander; 04.03.2012