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);
});
。
私はここで間違っていますか?
あなたのredirect_uriが悪いように見えます。私はそこにlocalhostを使用できるとは思わない。また、あなたはおそらくあなたのclient_secretをパブリックに貼り付けたくないでしょう。それをリセットしたいかもしれません。 – Mark
秘密について指摘してくれてありがとう。非常に感謝しています(私はそれをすべて削除したと思ったが、明らかにそうではなかった)。コールバックの面では、私はlocalhost(httpsもありません)しかし、私はまた、サーバーにすべてをプッシュし、SSLの後ろに適切なコールバックURIで使用され、まだ同じ問題が... – WagnerMatosUK