2013-05-05 151 views
1

我在這裏使用Dropbox API。 https://www.dropbox.com/developers/core/start/phpDropbox無效訪問令牌

向下滾動,他們給你「的完整代碼」我複製並粘貼在我的index.php

訪問我的index.php

1. Go to: https://www.dropbox.com/1/oauth/authorize?locale=en&oauth_token=9PURkb1SJoLJ4Z41&oauth_callback=http%3A%2F%2Flocalhost%2Fmax%2F 
2. Click "Allow" (you might have to log in first) 
3. Hit ENTER to continue. 

我走的時候,我得到這些指令的頁面在那裏,點擊「允許」按鈕,即時消息返回,沒有其他事情發生。

我的錯誤控制檯說,

PHP Notice: Use of undefined constant STDIN - assumed 'STDIN' in /Applications/MAMP/htdocs/max/index.php on line 16 
[05-May-2013 20:33:53 UTC] PHP Warning: fgets() expects parameter 1 to be resource, string given in /Applications/MAMP/htdocs/max/index.php on line 16 
[05-May-2013 20:33:54 UTC] PHP Fatal error: Uncaught exception 'Dropbox\Exception_InvalidAccessToken' with message ' 
{"error": "Invalid or expired oauth_token"}' in /Applications/MAMP/htdocs/max/dropbox-sdk/Dropbox/RequestUtil.php:222 
Stack trace: 
#0 /Applications/MAMP/htdocs/max/dropbox-sdk/Dropbox/WebAuth.php(155): Dropbox\RequestUtil::unexpectedStatus(Object(Dropbox\HttpResponse)) 
#1 /Applications/MAMP/htdocs/max/index.php(19): Dropbox\WebAuth->finish(Object(Dropbox\RequestToken)) 
#2 {main} 
    thrown in /Applications/MAMP/htdocs/max/dropbox-sdk/Dropbox/RequestUtil.php on line 222 

如何解決這些錯誤?我只是複製他們給了我

的index.php

require_once "dropbox-sdk/Dropbox/autoload.php"; 

use \Dropbox as dbx; 

$appInfo = dbx\AppInfo::loadFromJsonFile("config.json"); 

$dbxConfig = new dbx\Config($appInfo, "PHP-Example/1.0"); 

$webAuth = new dbx\WebAuth($dbxConfig); 
list($requestToken, $authorizeUrl) = $webAuth->start('http://localhost/max/'); 

echo "1. Go to: " . $authorizeUrl . "<br>"; 
echo "2. Click \"Allow\" (you might have to log in first)<br>"; 
echo "3. Hit ENTER to continue.\n"; 
fgets(STDIN); 


list($accessToken, $dropboxUserId) = $webAuth->finish($requestToken); 
print "Access Token: " . $accessToken->serialize() . "\n"; 

$dbxClient = new dbx\Client($dbxConfig, $accessToken); 
$accountInfo = $dbxClient->getAccountInfo(); 

print_r($accountInfo); 

$f = fopen("working-draft.txt", "rb"); 
$result = $dbxClient->uploadFile("/working-draft.txt", dbx\WriteMode::add(), $f); 
fclose($f); 
print_r($result); 

$folderMetadata = $dbxClient->getMetadataWithChildren($path); 
print_r($folderMetadata); 

$f = fopen("working-draft.txt", "w+b"); 
$fileMetadata = $dbxClient->getFile("/working-draft.txt", $f); 
fclose($f); 
print_r($fileMetadata); 
+0

請不要把標籤標題。 – Shikiryu 2013-05-05 21:18:56

回答

1

STDIN寫的是一個常數PHP。這個常量默認情況下不存在,你必須自己定義它。

你可以那樣做:

define("STDIN", fopen('php://stdin','r')); 
+0

謝謝,這解決了我的第2個錯誤。我仍然陷入無效/過期訪問令牌錯誤。 – bghouse 2013-05-05 21:15:08