0

我正在尝试连接到Asana APIvia Asana-php。当我创建index.php并放置需要连接的代码时,OAuth我在尝试连接到Asana. [this is my app in Asana][1]. How do I connect toAsana 时遇到了一些问题,或者我做错了什么。我的代码是这样的:

require '/vendor/autoload.php';

$ASANA_CLIENT_ID = getenv('my_asana_client_id');
$ASANA_CLIENT_SECRET = getenv('my_asana_client_secret');

$client = Asana\Client::oauth(array(
'client_id' => $ASANA_CLIENT_ID,
'client_secret' => $ASANA_CLIENT_SECRET,
// this special redirect URI will prompt the user to copy/paste the code.
// useful for command line scripts and other non-web apps
'redirect_uri' => 'https://chefpepper.dyndns.org/ChefPepperProjects/auth/asana/callback'
));

echo "authorized=" . $client->dispatcher->authorized . "\n";

# get an authorization URL:
$state = null;
$url = $client->dispatcher->authorizationUrl($state);`
4

1 回答 1

1

我是 Asana 的开发者倡导者,也许我可以帮助你!

首先,复习一下 OAuth 流程可能是个好主意(我们有一些关于此的文档)。基本上,这个想法是有 3 个参与者:用户、您的应用程序和 Asana。您可能正在寻找的流程在这里

对于 OAuth 应用程序,简短版本是:

  • 您将用户发送到 Asana 从任何地方拥有的 URL(它不必在您的集成中,只需一个直接链接即可)和您的客户端 ID。这允许用户授予您访问权限。
  • 如果他们同意,Asana 会向用户的浏览器发送一个重定向请求,其中包含一个长期存在的代码。请注意,这意味着将使用此代码从用户的浏览器调用您的服务器,因此必须将来自浏览器的新传入请求处理为您指定为重定向 URI 的任何内容,并且该位置必须可供您的所有用户访问集成,无论他们在哪里。
  • fetchToken您使用php(或refreshAccessToken在最后一个令牌过期时)将此代码和您的客户端密码发送到 Asana 。这是您的应用程序实际请求授权的地方。
  • 我们发回一个刷新令牌,它代表(大约)一个有效期为一小时的客户端-用户凭证对。
  • 您使用这些凭证代表该用户访问我们的 API。

因此,在此代码从我们的 php 库中的oauth 示例中删除之后,您需要执行几个步骤才能开始。您到达了初始化客户端并生成用户需要访问的链接的部分,但不是其余部分(即您实际上从未让您的 php 脚本向 Asana 询问凭据),所以我建议继续使用这个例子,看看你能走多远!

(附带说明,如果这是供您自己使用而不是供其他用户使用,那么个人访问令牌上手起来要容易 10 倍,尽管它们代表了实际的访问凭证 - 所以不要将它们交给其他人!)

于 2017-03-15T00:31:13.173 回答