2016-08-26 11 views
0

Rubyで書かれたバックエンドAPIとAngularを使用するクライアントアプリケーションがあります。私は角度アプリを使用してユーザーを認証するためにユーザーを認証したいと思います。AsanaのJS/Rubyライブラリを使用してAsanaのAPIに接続する方法

私はAsanaに自分のアプリケーションを作成しました。私はいくつかの問題があります:

最初の問題:私はAuthorisation Code Grantの承認エンドポイントを使用しています。ドキュメントを読んだら、代わりにImplicit Grantを使用しなければならないことに気付きました。ブラウザベースのアプリケーションに適していますが、Implicit Grantに変更して保存してページをリロードすると、Authorisation Code Grantに戻ります。

  var client = Asana.Client.create({ 
       clientId: 133, 
       clientSecret: 'mysecretcode', 
       redirectUri: 'http://localhost:7699/profile' 
      }); 
      client.useOauth({ 
       flowType: Asana.auth.PopFlow 
      }); 
      client.authorize().then(function() { 
       console.log('Auth completed'); 
      }).catch(function (err) { 
       console.log(err); 
      }); 
      client.users.me().then(function (result) { 
       console.log(result); 
      }); 

上記のほとんど作品:

はその後、私の角度アプリの私は、次のコードを持っています。私は許可部分のためにAsanaにリダイレクトされます。一度「許可」をクリックすると、私のアプリケーションにリダイレクトされ、URLの一部としてコードが取得されます。私が正しくドキュメントを理解している場合、私は私の最初の要求をするために上記のaccess_tokenを使用することができ

http://localhost:7699/profile#access_token=very_long_string 

:コードのようなものです。私はそうのような要求を行うアサナのJSライブラリを使用してみました場合:

client.users.me().then(function (result) { 
    console.log(result); 
}); 

私が参照してるclientオブジェクトは、私が認可のために以前に作成したのと同じであることに注意してください。上記は401、Unauthorizedコードを返します。

は、それから私は、次のことを試してみました。また、私は401不正なコードを取得します

var params = { 
    grant_type: 'refresh_token', 
    client_id: 876787, 
    client_secret: 'some_secret', 
    redirect_uri: 'http://localhost:7699/profile', 
    code: my_access_code 
}; 
$http.post('https://app.asana.com/-/oauth_token', params).then(function (result) { 
    console.log(result); 
}); 

私はここで間違っていますか?

+1

あなたのredirect_uriが悪いように見えます。私はそこにlocalhostを使用できるとは思わない。また、あなたはおそらくあなたのclient_secretをパブリックに貼り付けたくないでしょう。それをリセットしたいかもしれません。 – Mark

+0

秘密について指摘してくれてありがとう。非常に感謝しています(私はそれをすべて削除したと思ったが、明らかにそうではなかった)。コールバックの面では、私はlocalhost(httpsもありません)しかし、私はまた、サーバーにすべてをプッシュし、SSLの後ろに適切なコールバックURIで使用され、まだ同じ問題が... – WagnerMatosUK

答えて

1

まず、the node-asana examples directoryの例の1つをコピーしてアプリに貼り付け、それが動作するかどうかを確認することをおすすめします。

ポップアップフローを使い続けるには、Asana.auth.PopupFlow.runReceiver();popup_receiver.htmlに呼び出してください。これはあなたのredirect_uriが指し示すページになければならず、ポップアップを作成したページに後続のリクエストを行うのに必要な認証データを伝えます。また、認証要求(popup.html)を発信するページに、thenに渡されるコールバックの認証後に発生するアクションが含まれていることにも注意してください。これにより、ユーザーがポップアップによる認証を完了した後にのみ行われます。

+0

私は承認されましたが、私はバックエンドでAPIにリクエストを送信するauth_codeをどのように使用できますか? – WagnerMatosUK

+1

これについて、[別の質問](https://stackoverflow.com/questions/39246941/can-i-use-asana-access-token-in-the-backend)を投稿していますので、そこでの議論。 –

関連する問題