2013-01-03 157 views
0

我正在尝试使用OAuth-PHP发布使用PHP的推文,但我似乎无法弄清楚如何实现这一点。有没有人有任何提示如何做到这一点,或我应该看看?OAuth-PHP和Twitter

我已经看到OAuth-PHP库附带的示例,但我不确定如何调整它以发布推文。

我发现,没有回答类似的问题至今仍为:Sending a tweet with oauth-php?

我使用的代码是这样的:

define("TWITTER_CONSUMER_KEY", $this->config->Twitter->ConsumerKey); 
    define("TWITTER_CONSUMER_SECRET", $this->config->Twitter->ConsumerSecret); 

    define("TWITTER_OAUTH_HOST","https://api.twitter.com/"); 
    define("TWITTER_REQUEST_TOKEN_URL", TWITTER_OAUTH_HOST . "oauth/request_token"); 
    define("TWITTER_AUTHORIZE_URL", TWITTER_OAUTH_HOST . "oauth/authorize"); 
    define("TWITTER_ACCESS_TOKEN_URL", TWITTER_OAUTH_HOST . "oauth/access_token"); 
    define("TWITTER_PUBLIC_TIMELINE_API", TWITTER_OAUTH_HOST . "statuses/public_timeline.json"); 
    define("TWITTER_UPDATE_STATUS_API", TWITTER_OAUTH_HOST . "statuses/update.json"); 

    define('OAUTH_TMP_DIR', function_exists('sys_get_temp_dir') ? sys_get_temp_dir() : realpath($_ENV["TMP"])); 

    // Twitter test 
    $options = array('consumer_key' => TWITTER_CONSUMER_KEY, 'consumer_secret' => TWITTER_CONSUMER_SECRET); 
    OAuthStore::instance("2Leg", $options); 

    try { 
     $request = new OAuthRequester(TWITTER_UPDATE_STATUS_API, "POST", array('status' => $msg)); 
     $result = $request->doRequest(); 
    } 
    catch(OAuthException2 $e) { 
     echo "Exception: " . $e->getMessage(); 
    } 

这就是我想要做的,但我得到一个例外: 请求代码401失败:{“request”:“/ statuses/update.json”,“error”:“Invalid/expired Token”}

由于我是OAuth的新手,重要的一步,不知道它...

任何线索?

任何帮助将不胜感激。

+0

PEAR的Services_Twitter可能有帮助:http://pear.php.net/Services_Twitter – MECU

回答

0

我曾经使用默认的PHP Oauth库(PHP: Oauth - Manual)编写了一个脚本。我认为这可能会有用。当然,您仍然需要更改CONSUMER-KEY,CONSUMER_SECRET,ACCESS_TOKEN和ACCESS_TOKEN_SECRET。

try { 
    $oAuth = new OAuth(
     CONSUMER_KEY, 
     CONSUMER_SECRET, 
     OAUTH_SIG_METHOD_HMACSHA1, 
     OAUTH_AUTH_TYPE_URI); 
    $oAuth->setToken(ACCESS_TOKEN, ACCESS_TOKEN_SECRET); 
    $oAuth->fetch('https://api.twitter.com/1.1/statuses/update.json', array(
     'status' => 'This is a test'), OAUTH_HTTP_METHOD_POST); 
    var_dump($oAuth->getLastResponse()); 
    exit(); 
} catch (OAuthException $E) { 
    exit(); 
} 

我注意到您的代码是您没有使用访问令牌或访问令牌密钥(这是完成握手所必需的)。

在阅读oauth-php文档时,我发现了类似OAuthRequester::requestAccessToken();的东西。也许这是你应该寻找的东西。

+0

使用默认的PHP OAuth库不是一个选项,因为这似乎没有安装在我的共享主机提供商。我认为我可能需要的是setAccessToken,因为我有权限访问令牌,但我不明白在哪里以及如何设置这些令牌...... – BlunT

0

没关系,我刚刚使用了另一个OAuth实现,以及一个twitter oauth库。

这是张贴,这是重要的。

我只是想要一个独立的图书馆,我可以用于几个社交网络,我会尝试使用这一个来实现与facebook一样的事情。