2013-09-05 4 views
1

'm пытается сделать PHP скрипт для сообщения. AM ultilizando CURL и OAuth, но хотя и не тянуть меня какие-либо ошибки, либо пост на моем Timeline.Que'll делать неправильно ??Twitter API 1.1 Сообщение с CURL и PHP/Oauth

Я пробовал все, но по-прежнему не работает.

код Аса:

<?php 

# Variables 
$update_api_url = "https://api.twitter.com/1.1/statuses/update.json"; 
$tweet_latitude = "47.1195"; # Latitude of your town 
$tweet_longitude = "-88.5470"; # Longitude of your town 
# 
# Application speficic tokens 
$consumer_key = "XXXXXXXXXXXXXx"; 
$consumer_secret = "XXXXXXXXXXXx"; 
$access_token = "XXX-XXXXXXXXXXXXXXxxx"; 
$access_token_secret = "XXXXXXX"; 


$random_number = rand(); 
$tweet2post = "Test message # $random_number "; 
$tweet2post = substr($tweet2post, 0, 138); 
$tweet2post = rawurlencode("$tweet2post"); 

# 
# Construct the URL to be passed to cURL 
$post2twitter_api_url = $update_api_url; 
$post2twitter_api_url .= "?lat=$tweet_latitude"; 
$post2twitter_api_url .= "&long=$tweet_longitude"; 
$post2twitter_api_url .= "&status=$tweet2post"; 

# 
# OAuth signature 
$post2twitter_oauth_hash = ''; 
$post2twitter_oauth_hash .= 'lat=' . $tweet_latitude; 
$post2twitter_oauth_hash .= '&long=' . $tweet_longitude; 
$post2twitter_oauth_hash .= '&oauth_consumer_key=' . $consumer_key; 
$post2twitter_oauth_hash .= '&oauth_nonce=' . time(); 
$post2twitter_oauth_hash .= '&oauth_signature_method=HMAC-SHA1'; 
$post2twitter_oauth_hash .= '&oauth_timestamp=' . time(); 
$post2twitter_oauth_hash .= '&oauth_token=' . $access_token; 
$post2twitter_oauth_hash .= '&oauth_version=1.0'; 
$post2twitter_oauth_hash .= '&status=' . $tweet2post; 

$post2twitter_base = ''; 
$post2twitter_base .= 'POST'; 
$post2twitter_base .= '&'; 
$post2twitter_base .= rawurlencode("$update_api_url"); 
$post2twitter_base .= '&'; 
$post2twitter_base .= rawurlencode($post2twitter_oauth_hash); 

$post2twitter_key = ''; 
$post2twitter_key .= rawurlencode("$consumer_secret"); 
$post2twitter_key .= '&'; 
$post2twitter_key .= rawurlencode("$access_token_secret"); 

$post2twitter_signature = base64_encode(hash_hmac('sha1', $post2twitter_base, $post2twitter_key, true)); 
$post2twitter_signature = rawurlencode($post2twitter_signature); 

# 
# cURL Headers 
$post2twitter_oauth_header = ''; 
$post2twitter_oauth_header .= 'oauth_consumer_key="' . $consumer_key . '", '; 
$post2twitter_oauth_header .= 'oauth_nonce="' . time() . '", '; 
$post2twitter_oauth_header .= 'oauth_signature="' . $post2twitter_signature . '", '; 
$post2twitter_oauth_header .= 'oauth_signature_method="HMAC-SHA1", '; 
$post2twitter_oauth_header .= 'oauth_timestamp="' . time() . '", '; 
$post2twitter_oauth_header .= 'oauth_token="' . $access_token . '", '; 
$post2twitter_oauth_header .= 'oauth_version="1.0"'; 

$post2twitter_curl_header = array("Authorization: OAuth {$post2twitter_oauth_header}", 'Expect:'); 


# 
# cURL Request 
$post2twitter_curl_request = curl_init(); 
curl_setopt($post2twitter_curl_request, CURLOPT_HTTPHEADER, $post2twitter_curl_header); 
curl_setopt($post2twitter_curl_request, CURLOPT_HEADER, false); 
curl_setopt($post2twitter_curl_request, CURLOPT_URL, $post2twitter_api_url); 
curl_setopt($post2twitter_curl_request, CURLOPT_POST, true); 
curl_setopt($post2twitter_curl_request, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($post2twitter_curl_request, CURLOPT_SSL_VERIFYPEER, false); 

$post2twitter_response = curl_exec($post2twitter_curl_request); 
var_dump($post2twitter_response); 

curl_close($post2twitter_curl_request); 
?> 

Надеюсь кто-то может помочь. поздравления

+2

Inglés пожалуйста. – 19greg96

+0

Как насчет моей библиотеке? https://github.com/Certainist/UltimateOAuth – mpyw

+0

Этот вопрос (как единственный ответ) не Inglés –

ответ

0

Я держал пари, что он должен делать с разрешениями. Fijate https://dev.twitter.com/apps/tu_id/show имеют настройки OAuth -> Уровень доступа «Чтение и запись» и так далее Ваш маркер доступа -> Уровень доступа.

взял меня, чтобы понять, как писать доступ к маркеру доступа. Если это идет на https://dev.twitter.com/apps/tu_id/oauth Request и выбранные настройки -> POST.

надежда, что.

P.S. Я забыл уточнить, что случилось со мной с версией 1.1. Если вы делаете IDS выборки х ejemlo

get("friends/ids.json?screen_name=USU_ID&cursor=".$cursor); 

И это показывает, то это почти наверняка получил разрешение только для чтения (GET).

+1

Благодаря @LFMarabunta было разрешение +1 –

+0

Ничего, спасибо х принимает ответ. привет – FRECIA