2012-10-12 5 views
1

Я использую библиотеку oAuth от Абрахама Уильямса, чтобы обновить статус.Сессия, истекающая для twitter oAuth

Когда URL-адрес вызывается, я получаю сообщение об ошибке: «Не удалось опубликовать текст Tweet. Ошибка. : Причина: 1 ".

Я вставил некоторый тестовый код, и кажется, что сеанс теряется между переходами: $ _SESSION ['tweetmsg'] устанавливается при начальном вызове в index.php, но тогда, когда переход к connect.php происходит, то кажется, что сессия теряется Любые идеи

Ниже приводится исходный код:.?

index.php

<?php 
include_once '../../winsinclude/tw_config.php'; 
require_once "../../winsinclude/twitteroauth.php"; 
require_once "../../winsinclude/OAuth.php"; 
session_start(); 
if (empty($_SESSION['access_token'])) { 
    $_SESSION['tweetmsg'] = create_tweet_text(); 
    print "<script>self.location='./connect.php');</script>"; 
} 

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

if (!isset($_SESSION['tweetmsg'])) { 
    exit('No tweet value in session or from form'); 
} 
$tweetmsg = $_SESSION['tweetmsg']; 
$result = $connection->post('statuses/update', array('status' => $tweetmsg)); 
unset($_SESSION['tweetmsg']); 
if (200 === $connection->http_code) { 
    echo 'Tweet Posted: '.$tweetmsg; 
} 
else { 
    echo 'Could not post Tweet. Error: '.$httpCode.' Reason: '. 
    session_destroy(); 
} 
function create_tweet_text() { 
    return 'this is a test'; 
} 

connect.php

?php 
session_start(); 
include_once '../../winsinclude/tw_config.php'; 
require_once "../../winsinclude/twitteroauth.php"; 
require_once "../../winsinclude/OAuth.php"; 

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET); 
$request_token = $connection->getRequestToken(OAUTH_CALLBACK.'callback.php'); 

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

$url = $connection->getAuthorizeURL($request_token); 
print "<script>self.location='$url';</script>"; 

callback.php

<?php 
session_start(); 
include_once '../../winsinclude/tw_config.php'; 
require_once "../../winsinclude/twitteroauth.php"; 
require_once "../../winsinclude/OAuth.php"; 

if (
    isset($_REQUEST['oauth_token']) 
    && $_SESSION['oauth_token'] !== $_REQUEST['oauth_token'] 
) { 
    echo 'Session expired'; 
} 
else { 
    $connection = new TwitterOAuth(
    CONSUMER_KEY, 
    CONSUMER_SECRET, 
    $_SESSION['oauth_token'], 
    $_SESSION['oauth_token_secret'] 
); 
    $_SESSION['access_token'] = $connection->getAccessToken($_REQUEST['oauth_verifier']); 
    print "<script>self.location='index.php';</script>"; 
} 

ответ

0

Недавно Twitter деактивируется ряд URL протокола HTTP для OAuth и заменили их Https эквиваленты. Если вы видите строку URL http://twitter.com/oauth/request_token в своих предложениях, значит, вам нужно следовать https://dev.twitter.com/discussions/10803 и изменить все звонки на https ...

+0

Если вы прочитали исходный код, который я опубликовал, вы увидите, что я не звоню twitter API без конкретных конечных точек, и что я использую библиотеку Abraham Williams, которая не вызывает библиотеки API без использования конкретной конечной точки. – user1742322

Смежные вопросы