проблема в использовании OAuth для Twitter - PullRequest
0 голосов
/ 14 декабря 2010

Я реализовал OAuth для твиттера, используя библиотеку PHP Авраама Уильямса. Он отлично работает на моем личном веб-сервере (Apache). Но когда я загрузил все свои файлы приложений в публичный домен веб-хостинга, он перестает работать. Когда я нажимаю кнопку «войти в систему с помощью учетной записи Twitter», которая указывает пользователю «connect.php», который создает ссылку для проверки подлинности моего приложения, он не создает эту ссылку. Скорее остановка управления на этой странице 'connect.php'. Вот connect.php

<?php
session_start();

require_once 'twitteroauth/TwitterOAuth.php';
define("CONSUMER_KEY", "***************");
define("CONSUMER_SECRET", "********************************");

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
$request_token = $connection->getRequestToken('http://babar.phpnet.us/callback.php');

$_SESSION['oauth_token'] = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] =
$request_token['oauth_token_secret'];

$url = $connection->getAuthorizeURL($request_token);
header('Location: ' . $url);
?>

Вот callback.php

<?php
session_start();

require_once 'twitteroauth/TwitterOAuth.php';
define("CONSUMER_KEY", "****************");
define("CONSUMER_SECRET", "*********************************");

if (
    isset($_REQUEST['oauth_token']) 
    && $_SESSION['oauth_token'] !== $_REQUEST['oauth_token']) 
    {
     //echo 'Session expired';
     header('Location: ./connect.php');
    }
  else {
        $connection = new TwitterOAuth(CONSUMER_KEY,CONSUMER_SECRET,
        $_SESSION['oauth_token'],$_SESSION['oauth_token_secret']);
        $_SESSION['access_token'] = 
        $connection->getAccessToken($_REQUEST['oauth_verifier']);
        header('Location: index1.php');
       }
 ?>

index1.php

  if (empty($_SESSION['access_token'])) {
     header('Location: ./connect.php');
    }

     require_once 'twitteroauth/TwitterOAuth.php';
     define("CONSUMER_KEY", "**************");
     define("CONSUMER_SECRET", "*******************");

     $connection = new TwitterOAuth(CONSUMER_KEY,CONSUMER_SECRET,
     $_SESSION['access_token']['oauth_token'],
     $_SESSION['access_token']['oauth_token_secret']
    );

    include("index.php");
    $tweetmsg = $_POST['t_update'];
    $result = $connection->post('statuses/update', array('status' => $tweetmsg));
      if (200 === $connection->http_code) {
         //echo'tweet posted';
         }
       else {
             $resultmsg = 'Could not post Tweet. Error: '.$httpCode.'  
             Reason:'.$result->error; 
             //echo $resultmsg;
        }
     ?>

1 Ответ

0 голосов
/ 14 декабря 2010

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

Вам также следует проверить, не блокирует ли брандмауэр https://api.twitter.com.

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