这是一个基本问题。我刚刚开始使用API调用。我正在尝试使用Dropbox API。
我的应用程序包含以下代码:
<?php
require_once "dropbox-sdk/Dropbox/autoload.php";
use \Dropbox as dbx;
$appInfo = dbx\AppInfo::loadFromJsonFile("app-info.json");
$webAuth = new dbx\WebAuthNoRedirect($appInfo, "CharmsBox/1.0");
$authorizeUrl = $webAuth->start();
print "<p>Authorize the App <a href=\"".$authorizeUrl."\">now</a></p>";
print '
<p class="ui-widget">Auth Key: <input id="authkey">
<a id="btnAuth" class="btn btn-primary btn-large" href="#" tabindex="2">
<span class="glyphicon glyphicon-flash" aria-hidden="true"></span>Authenticate
</a>
</p>';
?>
在另一个标签中,我输入用于验证的用户名和密码。 Dropbox提供身份验证代码。我现在应该使用此代码生成用户ID和访问令牌,如下所示:
list($accessToken, $userId) = $webAuth->finish($authCode);
echo "Authorization complete.\n";
echo "- User ID: $userId\n";
echo "- Access Token: $accessToken\n";
但是由于我的php代码已经完成执行,我无法运行上面的代码。我尝试在另一个PHP脚本中使用以下内容,并使用GET请求:
require_once "dropbox-sdk/Dropbox/autoload.php";
use \Dropbox as dbx;
$appInfo = dbx\AppInfo::loadFromJsonFile("app-info.json");
$webAuth = new dbx\WebAuthNoRedirect($appInfo, "CharmsBox/1.0");
if (isset($_GET['authcode'])) {
list($accessToken, $userId) = $webAuth->finish($authCode);
echo "Authorization complete.\n";
echo "- User ID: $userId\n";
echo "- Access Token: $accessToken\n";
return;
} else {
print "Unauthenticated call of script!";
return;
}
然而,这给了我以下错误代码:
Fatal error: Uncaught exception 'InvalidArgumentException' with message ''code' must not be null' in /var/www/virtual/mydomain/split/htdocs/dropbox-sdk/Dropbox/Checker.php
Dropbox的原始示例脚本如下所示:
echo "1. Go to: $authorizeUrl\n";
echo "2. Click \"Allow\" (you might have to log in first).\n";
echo "3. Copy the authorization code.\n";
echo "Enter the authorization code here: ";
$authCode = \trim(\fgets(STDIN));
list($accessToken, $userId) = $webAuth->finish($authCode);
echo "Authorization complete.\n";
echo "- User ID: $userId\n";
echo "- Access Token: $accessToken\n";
如何使用生成的访问代码继续身份验证?具体来说,我如何接受基于Web的输入而不是STDIN并继续身份验证?
答案 0 :(得分:0)
在网络应用中,您可能希望使用dbx\WebAuth
,而不是dbx\WebAuthNoRedirect
。查看SDK中的web file browser example。