2014-11-07 4 views
0

나는 이것에 초보자이다. 그러나 나는 cURL을 사용하여 GET 요청을 수행하여 사용자 트윗을 다시 가져 오려고합니다.Twitter oauth with PHP with cURL

나는 인증 할 수있었습니다. 그러나 나는 데이터를 얻는 방법을 찾을 수 없다. 나는 내 localhost에서 일하고있다.

기본 인증서를 추가하려고했지만 작동하지 않습니다.

내 사이트의 SSL 인증서를 구매해야합니까? SSL 인증서를 구입하지 않은 다른 사이트에서 트위터 피드를 보았으므로 어떻게하는지 모릅니다.

나는 이것을 Twitter 문서에서 보았습니다. 언급 된 파일은 내가 구입할 수있는 파일입니까?

curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, True); 
curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($connection, CURLOPT_CAINFO, "path:/ca-bundle.crt"); 

이 내가있는 CURLOPT_URL 섹션을 넣고 서버로부터 긍정적 인 반응을 얻었다 전에 내 컬 코드, 그것은 일입니다 :

$url = "https://api.twitter.com/oauth2/token"; 
    $headers = array( 
     "POST /oauth2/token HTTP/1.1", 
     "Host: api.twitter.com", 
     "User-Agent: my Twitter App v.1", 
     "Authorization: Basic ".$encoded."", 
     "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" 
    ); 
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_CAINFO, "cacert.pem"); 
curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials"); 
curl_setopt($ch, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/".$username.".json?count=".$num_tweets); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$header = curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
$output = curl_exec($ch); 
curl_close($ch); 

편집 : 문제는 위의 코드가, 내가 틀린 일을하고 있지만 확실하지 않다는 것을 알고 있습니다. 어쨌든, 여기에 원래 코드를 내가 일을 확인하고 예상 된 결과를 다시 서버에서 얻었습니다. 그래서 다음 단계는 타임 라인에서 사용자의 트윗을 요청하는 것입니다.

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials"); 
$header = curl_setopt($ch, CURLOPT_HEADER, 1); 
$result = curl_exec($ch); 
curl_close($ch); 
echo $result; 
+0

http://stackoverflow.com/questions/18971983/curl-requires-curlpt-ssl-verifypeer-false를 확인하십시오. SSL 연결은 cURL과 Twitter 사이에 필요하며 서버와 방문자 사이에는 필요하지 않습니다. (PEM은 다음 위치에 있습니다. http://curl.haxx.se/ca/cacert.pem) –

답변

0

curl_getinfo를 사용하면 무슨 일이 일어나고 있는지 알 수 있습니다.

Twitter 문서의 url을 게시하여 살펴볼 수도 있습니다.

$ headers는 호스트를 api.twitter.com으로 나타내지 만 CURLOPT_URL은 twitter.com을 사용합니다.이 것은 오타입니까?

0

코드는 정신 분열증이다 :

curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/".$username.".json?count=".$num_tweets); 

당신은 다른 URL로 두 번 URL을 설정하고 있습니다. 마지막 URL 세트 만 효과가 있으므로 API에 게시하지 않고 메인 트위터 사이트의 다른 게시물에 게시합니다.

아니요,이 작업을 수행하기 위해 자체 컴퓨터에 SSL 인증서가 필요하지 않습니다. ca-cert.pem은 인증서 발급자의 공개 인증서 목록으로, 트위터의 인증서를 검증/인증하는 데 사용됩니다. 기본적으로 브라우저에 내장 된 것과 동일한 기능으로 다른 SSL 인증서를 확인할 수 있습니다. 예 : amazon.com에서 쇼핑하려면 개인 SSL 인증서를 구입할 필요가 없습니다. 아마존의 서버를 인증하기 위해 브라우저에 CA 인증서가 필요합니다.

+0

첫 번째 작업을 수행 한 후 두 번째 비트를 추가하려고 시도하면 해당 작업이 내 잘못입니다. 그렇다면 어떻게 인증을하고이 요청을 보내고 응답을 받습니까? – Francesca

+0

나는 내가했던 원래 코드로 포스트를 업데이트했다. 그러나 나는 다음 단계를 모른다. 사용자의 타임 라인에서 트윗을 요청하려면 어떻게해야합니까? – Francesca