Как перейти с обычной проверки подлинности с помощью обычного пароля на систему на основе OAuth? - PullRequest
2 голосов
/ 25 апреля 2010

Сегодня выяснилось, что Twitter прекратит базовую аутентификацию для своего API; сейчас толчок к OAuth, но я не имею ни малейшего понятия о том, как его использовать или это правильный путь для меня.

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

Я использую этот базовый код PHP:

$status = urlencode(stripslashes(urldecode("Test tweet")));
$tweetUrl = 'http://www.twitter.com/statuses/update.xml';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "$tweetUrl");
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, "status=$status");
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");

$result = curl_exec($curl);
$resultArray = curl_getinfo($curl);

if ($resultArray['http_code'] == 200)
{
    curl_close($curl);
    $this->redirect("");
}
else
{
    curl_close($curl);
    echo 'Could not post to Twitter. Please go back and try again.';
}

Как мне перейти с этого на систему OAuth? Я был бы очень признателен за любые уроки / советы. Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 12 июля 2010

Я нашел эту страницу / скрипт полезным, когда внедрил OAuth для Twitter: http://www.jaisenmathai.com/blog/2009/04/30/letting-your-users-sign-in-with-twitter-with-oauth/
Я уверен, что вы можете получить это со страницы, на которую я ссылаюсь, но код, который я использую с этим классом для моей страницы:

$twtrObj=new EpiTwitter($consumer_key, $consumer_secret);
$twtrObj->setToken($tok, $sec);
$status="I just submited new artwork! http://gravityprops.com/dragonart/artwork?action=view&id={$id}";
$update=$twtrObj->post_statusesUpdate(array('status' => $status));
$tmp=$update->response;

с $ tok и $ sec как токен и секрет для любого конкретного пользователя, которого я извлекаю из базы данных. $ Consumer_key и $ consumer_secret объявлены в отдельном файле, который включен (так же, как на странице, на которую я ссылался). Я поместил все нужные мне файлы в папку PHP include, чтобы только PHP мог получить к ней доступ.

1 голос
/ 25 апреля 2010

Для начала, почему вы отправляете пароль своей учетной записи через обычный http://, а не по SSL (https://)? Я бы изменил это немедленно.

Второй: http://oauth.net/documentation/getting-started/

Читайте документацию в Твиттере, я уверен, что она где-то есть.

0 голосов
/ 20 июня 2010

только протокол OAuth основан на авторизации пользователя для доступа к данным пользователя, поэтому то, что вы хотите, невозможно без авторизации пользователя (перенаправление на сайт Twitter).

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

0 голосов
/ 25 апреля 2010

Этот пример очень хорош, и есть еще несколько вопросов по API Wiki Twitter .

Edit:
Для обновления вам нужно попросить своих пользователей нажать кнопку «Войти через Twitter» вместо того, чтобы они вводили свои данные. Они будут отправлены на страницу Twitter OAuth, и если они авторизуют ваше приложение, вы сможете продолжить работу в обычном режиме. Таким образом, вам не нужно иметь дело с паролями.

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