使用PHP连接到Asana API

时间:2017-03-01 16:20:02

标签: php asana-api

我尝试通过Asana API连接到Asana-php。当我创建index.php并将代码需要与OAuth连接时,我在尝试连接到Asana. [this is my app in Asana][1]. How do I connect to Asana或我做错了时遇到了一些问题。我的代码是这样的:

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);`

1 个答案:

答案 0 :(得分:1)

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

首先,刷新OAuth流程可能是一个好主意(我们对此有some docs)。基本上这个想法是有3个演员:用户,你的应用和Asana。您可能正在寻找的流程为here

简短版本适用于OAuth应用:

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

因此,在我们的php库中的oauth example中,您需要经历的代码离开后,有几个步骤。你得到了初始化客户端的部分,并生成了用户需要访问的链接,但不是其余部分(即你从未真正让你的php脚本向Asana请求凭据),所以我建议你保留以示例为例,看看你能走多远!

(作为旁注,如果这是供您自己使用而不是其他用户,personal access tokens更容易上手10倍,但它们代表了实际的访问凭据 - 所以不要动手他们出去了!)