2015-11-23 44 views
1

我使用OAuth認證的Dropbox獲得訪問令牌:https://blogs.dropbox.com/developers/2012/07/using-oauth-1-0-with-the-plaintext-signature-method/HTTP請求失敗!與文件獲取內容

但我得到的錯誤信息: 警告:的file_get_contents(https://api.dropbox.com/1/oauth/request_token):未能打開流:HTTP請求失敗! HTTP/1.1 400錯誤的請求

我的PHP代碼:

$Header = json_encode(array('Authorization: OAuth oauth_version="1.0"', "oauth_signature_method" => "PLAINTEXT", "oauth_consumer_key" => "XX", "oauth_signature" => "XX")); 

$Options = array('http' => 
    array(
     'method' => 'POST', 
     'header' => $Header, 
    ) 
); 


$Context = stream_context_create($Options); 
$Result = file_get_contents("https://api.dropbox.com/1/oauth/request_token", false, $Context); 

print_r($Result); 
+0

嘗試去CURL。檢查了這一點:http://stackoverflow.com/a/8543512/4388034 –

+0

也檢查這個鏈接,它會解釋你的方式更好的用法:http://fabi.me/en/php-projects/dropphp-dropbox-api -client/comment-page-2/ –

回答

1

設在http://php.net/manual/en/context.http.php的文件上,它看起來像header選項僅僅是一個正常的字符串,而不是json_encoded。另外,也應該能夠使用報頭的數字索引陣列,像這樣:

$Header = array(
"Authorization: OAuth oauth_version=\"1.0\", oauth_signature_method=\"PLAINTEXT\", oauth_consumer_key=\"XXXXX\", oauth_signature=\"XXXXX&\"\r\n" 
); 

$Options = array('http' => 
    array(
     'method' => 'POST', 
     'header' => $Header, 
    ) 
); 
+0

我試試但不能正常工作:( – user3492381

+0

嗯,試試這個代替頭文件:'$ header ='授權:OAuth oauth_version =「1.0」,oauth_signature_method =「PLAINTEXT」, oauth_consumer_key =「」,oauth_signature =「&」''(所有一個長字符串,不在數組中) – kunruh

+0

kunruh先生,我試過你的代碼,但沒有和我一起工作:( – user3492381

0

這是錯誤的:

$Header = json_encode(array('Authorization: OAuth oauth_version="1.0"', "oauth_signature_method" => "PLAINTEXT", "oauth_consumer_key" => "XX", "oauth_signature" => "XX")); 

header放慢參數在HTTP流或者是含有一個簡單的單串一個單一標題key: value或一串key: value字符串。你將一個json字符串填充爲頭部,這意味着它不是一個有效的http頭部。

完全刪除json_encode()部分。 $Header = array(...)是你所需要的。

+0

我刪除它但不工作:( – user3492381