Dropbox API - 调用未定义的函数readline()

时间:2014-02-16 07:13:25

标签: php dropbox-api

我有以下代码

<?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()

我做错了什么?

2 个答案:

答案 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();