Аутентификация с помощью Twitter OAuth API - PullRequest
3 голосов
/ 17 февраля 2012

В настоящее время я пытаюсь интегрировать твиттер в php веб-приложение, над которым я работаю с OAuth.

У меня есть HTML-страница, которая предоставляет ссылку на URL-адрес аутентификации приложения Twitter, который работает нормально и показывает экран аутентификации.

Ниже приведен код, который вызывает функцию.

if (!isset($_GET['oauth_token']))
{
    //include("phpHandler/twitterLib/secret.php");
    getTwitterURL($consumer_key, $consumer_secret);
}

Потребительские ключ и потребитель_секреты включены в файл php.

Ниже приведен код, который получает авторизацию в twitterurl.

function getTwitterUrl($consumer_key, $consumer_secret)
{
    $twitterObj = new EpiTwitter($consumer_key, $consumer_secret);
    $url = $twitterObj->getAuthorizationUrl();
    echo '<a class="linkButtons" href="'.$url.'">Add Twitter</a>';
}

Это перенаправление обратно на страницу в порядке, и затем я вызываю метод аутентификации для получения информации, такой как имя пользователя в твиттере.Ниже приведена функция, которая выполняет аутентификацию

function authenticate($consumer_key, $consumer_secret)
{
    require ("twitterLib/EpiCurl.php");
    require ("twitterLib/EpiOAuth.php");
    require ("twitterLib/EpiTwitter.php");
    require ("twitterLib/secret.php");*/
    $twitterObj = new EpiTwitter($consumer_key, $consumer_secret);
    $twitterObj->setToken($_GET['oauth_token']);
    $token = $twitterObj->getAccessToken();
    $twitterObj = new EpiTwitter($consumer_key, $consumer_secret);
    $twitterObj->setToken($token->oauth_token, $token->oauth_token_secret);
    $token = $twitterObj->getAccessToken();
    $twitterObj->setToken($token->oauth_token, $token->oauth_token_secret);
    $_SESSION['ot'] = $token->oauth_token;
    $_SESSION['ots'] = $token->oauth_token_secret;
    $twitterInfo= $twitterObj->get_accountVerify_credentials();
    echo '<pre>';
    print_r($twitterInfo->response);
  }

. Echo и print_r показывают ответ от твиттера.

Я получаю следующую ошибку, распечатанную в массиве

Массив ([ошибка] => Неверный / просроченный токен [запрос] => /account/verify_credentials.json)

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

Спасибо за любую помощь, которую вы можете предоставить.

Ответы [ 3 ]

1 голос
/ 19 февраля 2012

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

Многие пользователи доверяют приложению, чтобы прочитать свою информацию, но не обязательно изменить свое имя или опубликовать новые статусы.Для обновления информации через API Twitter - будь то имя, местоположение или добавление нового статуса - требуется HTTP POST.Мы придерживаемся того же ограничения при реализации этого.Любой метод API, для которого требуется HTTP POST, считается методом записи и требует доступа на чтение и запись.

Какой бы ни была ваша система хранения, вам нужно начинать хранить oauth_token и oauth_token_secret (вместе - доступ)токен ") для каждого пользователя вашего приложения.Oauth_token_secret должен храниться надежно.Помните, что вы будете получать доступ к этим значениям для каждого аутентифицированного запроса, который ваше приложение отправляет в API Twitter, поэтому сохраняйте их таким образом, чтобы масштабироваться до вашей пользовательской базы.Когда вы используете OAuth, вам больше не нужно хранить пароли для ваших пользователей.

require '../tmhOAuth.php';

require '../tmhUtilities.php';

$tmhOAuth = new tmhOAuth(array(

  'consumer_key'    => 'YOUR_CONSUMER_KEY',

  'consumer_secret' => 'YOUR_CONSUMER_SECRET',

  'user_token'      => 'AN_ACCESS_TOKEN',

  'user_secret'     => 'AN_ACCESS_TOKEN_SECRET',

));



// we're using a hardcoded image path here. You can easily replace this with an uploaded image-see images.php example)

// 'image = "@{$_FILES['image']['tmp_name']};type={$_FILES['image']['type']};filename={$_FILES['image']['name']}",



$image = "./dickvandyke.jpg';



$code = $tmhOAuth->request('POST', 'https://upload.twitter.com/1/statuses/update_with_media.json',

  array(

    'media[]'  => "@{$image}",

    'status'   => "Don't slip up" // Don't give up..

  ),

  true, // use auth

  true  // multipart

);



if ($code == 200) {

  tmhUtilities::pr(json_decode($tmhOAuth->response['response']));

} else {

  tmhUtilities::pr($tmhOAuth->response['response']);

}
0 голосов
/ 29 октября 2015

Я работал над новым Twitter API.Он работает нормально для меня со следующим кодом, который я сделал.

<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$consumer_key = "XXXXXXX";
$consumer_secret = "XXXXXXX";

$connection = new TwitterOAuth($consumer_key, $consumer_secret);

 $request_token= $connection->oauth('oauth/request_token', array('oauth_callback' => "http://callbackurlhere.com/callback.php"));
$url = $connection->url("oauth/authorize", array("oauth_token" => $request_token['oauth_token']));

header('Location: '. $url);
?>

callback.php код ниже, чтобы получить постоянный oauthToken и сохранить его в базе данных для дальнейшего использования:

<?php
require "vendor/autoload.php";

use Abraham\TwitterOAuth\TwitterOAuth;

    // session_start();
    if(isset($_REQUEST['oauth_verifier'])){

    $oauth_access_token = $_REQUEST['oauth_token'];
    $oauth_access_token_secret = $_REQUEST['oauth_verifier'];
    $consumer_key = "XXXXXXXXXXXXXXXX";
    $consumer_secret = "XXXXXXXXXXXXXXX";
    $connection = new TwitterOAuth($consumer_key, $consumer_secret,$oauth_access_token , $oauth_access_token_secret );

    $access_token = $connection->oauth("oauth/access_token", array("oauth_verifier" => $oauth_access_token_secret));
    var_dump($access_token); die("--success here--");// Obtain tokens and save it in database for further use.
    }

    ?>
0 голосов
/ 19 февраля 2012

Мне удалось найти проблему. Я всегда создаю два новых объекта EpiTwitter в функции authenticate.

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