我有以下代码
<?php
// Include DropBox API
require_once "dropbox-sdk/Dropbox/autoload.php";
use \Dropbox as dbx;
// Settings for DropBox
$appInfo = dbx\AppInfo::loadFromJsonFile("config.json");
$webAuth = new dbx\WebAuthNoRedirect($appInfo, "PHP-Example/1.0");
$authCode = \trim(\readline("A-WALID-KEY-HERE"));
list($accessToken, $dropboxUserId) = $webAuth->finish($authCode);
print "Access Token: " . $accessToken . "\n";
?>
我在运行代码时遇到此错误。 调用未定义的函数readline()
我做错了什么?
答案 0 :(得分:1)
从您的评论中听起来就像您尝试将其作为网络应用程序运行一样。如果是这样,你就会遇到麻烦。这看起来像命令行应用程序示例代码,这就是它使用readline
(从命令行读取输入)的原因。
您可能希望从SDK随附的web-file-browser
示例开始。这应该作为Web应用程序运行,并且应该向您展示如何在浏览器中进行身份验证(<其他内容)。
答案 1 :(得分:0)
我在同一代码中遇到了同样的问题。你忘了添加这个:
$authorizeUrl = $webAuth->start();
就在这一行之后:
$webAuth = new dbx\WebAuthNoRedirect($appInfo, "PHP-Example/1.0");
您需要做的是使用存储在变量$ authorizeUrl中的已创建链接来获取授权代码。 执行此操作后,您需要使用授权代码生成令牌。对于此评论,代码中的部分内容如下:
<?php
// Include DropBox API
require_once "dropbox-sdk/Dropbox/autoload.php";
use \Dropbox as dbx;
// Settings for DropBox
//$appInfo = dbx\AppInfo::loadFromJsonFile("config.json");
//$webAuth = new dbx\WebAuthNoRedirect($appInfo, "PHP-Example/1.0");
//**$authorizeUrl = $webAuth->start();**
$authCode = \trim(\readline("**A-WALID-KEY-HERE**"));
list($accessToken, $dropboxUserId) = $webAuth->finish($authCode);
print "Access Token: " . $accessToken . "\n";
?>
获得令牌后,将其保存在安全的地方并对其余行进行注释。然后你可以毫无问题地访问Dropbox。例如:
$dbxClient = new dbx\Client($accessToken, "PHP-Example/1.0");
$accountInfo = $dbxClient->getAccountInfo();