首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP API访问-在oauth2身份验证后继续

PHP API访问-在oauth2身份验证后继续
EN

Stack Overflow用户
提问于 2015-10-19 00:19:04
回答 1查看 73关注 0票数 1

这是一个相当基本的问题。我刚刚开始使用API调用。我正在尝试使用Dropbox API。

我的应用程序有以下代码:

代码语言:javascript
复制
<?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和访问令牌,如下所示:

代码语言:javascript
复制
list($accessToken, $userId) = $webAuth->finish($authCode);
echo "Authorization complete.\n";
echo "- User ID: $userId\n";
echo "- Access Token: $accessToken\n";

但是,由于我的php代码已经执行完毕,我无法运行上面的代码。我尝试在另一个php脚本中使用以下代码,并使用GET请求:

代码语言:javascript
复制
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;
}

但是,这会给出以下错误代码:

代码语言:javascript
复制
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中的原始示例脚本如下所示:

代码语言:javascript
复制
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并继续身份验证?

EN

回答 1

Stack Overflow用户

发布于 2015-10-19 01:36:47

在web应用程序中,您可能希望使用dbx\WebAuth,而不是dbx\WebAuthNoRedirect。查看SDK中的web file browser example

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33200225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档