2016-08-31 8 views
1

私は、フロントエンドクライアントとしてAngular Appを、そしてRailsバックエンドAPIを持っています。私はAsanaのAPIにアクセスしたいと思っており、Angular Appを介して認証したいので、Implicit Grant FlowというOAuthプロセスに従っています。バックエンドでAsanaのaccess_tokenを使用できますか?

access_tokenを取得しましたが、Postmanでこのコードを使用しようとすると(私がバックエンドで実装するAPI呼び出しをテストするために)、私は認証されたコードではなく401を取得します。

ユーザーがAngular経由で承認し、このアクセストークンを永続的なトークン/コードと交換してバックエンドで後続の呼び出しを行う方法はありますか?

もしそうでなければ、私はAPIにアクセスする必要があるたびにこれを承認する必要がありますか?私は許可した後私が試したポストマン分で上記の

enter image description here

注:ここでEDIT

はポストマンでaccess_tokenを使用する私の試みのスクリーンショットですアプリは、トークンがまだ有効であると思います。

答えて

1

私はaccess_tokenが期限切れになってからテストするまでに時間がかかると思います。アクセストークンは短命であることを意図しています(Asanaアクセストークンは現在1時間後に期限切れになります)。これが当てはまらない場合は、郵便配達人(秘密を書き直したもの)で行っているリクエストを投稿してください。

有効期限を延長する場合は、authorization code grantを使用してアクセストークンではなく最新表示トークンを取得する必要があります。 APIにアクセスする必要があるときに、一時アクセストークンのリフレッシュトークンを交換できます(Asanaクライアントライブラリがこれを暗黙的に処理します)。

+0

私には2つの問題があると思います:1)私は何か間違ってPostmanでエラーが発生しました。2)永久的なトークンを取得したいので、繰り返し使用することができます。私が正しく理解していれば、私がバックエンドで認証をしていない限り、私は 'Authorization Code Grant'を手に入れることができないので、' access_token'を永続的なものに交換する方法があることを望んでいましたか? – WagnerMatosUK

+1

まず、あなたのPostmanリクエストの問題:Asanaはクエリパラメータではなくヘッダとして 'Authorization:Bearer somecode'をヘッダとして取ります。アクセストークンをクエリパラメータとして渡す場合は、 'https://app.asana.com/...?access_token = somecode'のように' access_token'パラメータに渡すことができます。私は2)別のコメントで議論するつもりです。 –

+1

アクセストークンは、リフレッシュトークンよりも安全性の低い資格情報であるため、リフレッシュトークンのアクセストークンを交換する方法はありません。ユーザーがあなたのアプリを承認したら、暗黙的な付与エンドポイントへのその後のリダイレクトも追加して、ユーザーが再びクリックする必要はありません。これはクライアント上でauthを処理する正しい方法です。クライアントには不要なAsana APIクライアントシークレットを使用せずにリフレッシュトークンを使用することはできません。 サーバーで長寿命のトークンが必要な場合は、バックエンドで許可コード許可を使用する必要があります。 –

関連する問題