2017-03-01 86 views
0

我試圖通過Asana-php連接到Asana API。當我創建我的index.php,並把代碼需要連接OAuth我有一些問題,試圖連接到Asana. [this is my app in Asana][1]. How do I connect to Asana`或我做錯了什麼。我的代碼是這樣的:使用PHP連接到Asana API

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

回答

0

我是Asana的Developer Advocate,也許我可以幫你!

首先,刷新OAuth流(我們在此有some docs)可能是個好主意。基本上這個想法是有3個角色:用戶,你的應用和Asana。您可能要查找的流量爲here

簡短的版本是,對OAuth的應用:

  • 您向用戶發送到嘉尚從任何地方擁有一個URL(它沒有在你的整合,只是一個單純的鏈接即可)與您的客戶ID。這讓用戶授予您訪問權限。
  • 如果他們同意,Asana會用長壽命代碼向用戶的瀏覽器發回重定向請求。請注意,這意味着您的服務器將使用此代碼從用戶的瀏覽器中調用,因此必須處理來自瀏覽器的新輸入請求,以指定您的重定向URI,並且該位置必須可供所有用戶訪問您的整合,無論他們在哪裏。
  • 您在PHP中使用fetchToken(或最後一個令牌到期時的refreshAccessToken)將此代碼和您的客戶端機密發送給Asana。這是您的應用程序實際要求授權的地方。
  • 我們發送一個刷新令牌,表示(近似)一個小時內有效的客戶端用戶憑證對。
  • 您可以使用這些憑據代表此用戶訪問我們的API。

因此,在我們的php庫中,該代碼從oauth example中離開的位置有幾個步驟,您需要經過才能繼續。你得到了你初始化客戶端的部分,並生成用戶需要去的鏈接,但不是其餘部分(即你從未真正讓你的PHP腳本向ASANA請求憑證),所以我建議繼續這個例子,看看你能得到多遠! (作爲一個方面說明,如果這是爲了您自己的用途,而不是其他用戶,personal access tokens雖然代表了實際的訪問憑證,但它們代表了實際的訪問憑證,所以不要將它們交給其他用戶! )