VSCode 拡張機能開発で OAuth 認証 - 4
VSCode 拡張機能開発で OAuth 認証 - 3 <終> - 日々是好日
この記事の続き。型エイリアスと async/await で、OAuth 認証フローをもっと簡単に記述してみた。 認証には oauth モジュールを使用。
全ソースはこちら↓
async startOAuth() { ... type oauthTokenCallback = { err: { statusCode: number, data?: any }, token: string, tokenSecret: string, query: any }; const getOAuthRequestToken = ( scope: {[key: string]: string} ) => new Promise<oauthTokenCallback>((resolve) => this.oauth.getOAuthRequestToken( scope, (err, token, tokenSecret, query) => { resolve({err, token, tokenSecret, query}); })); const getOAuthAccessToken = ( requestToken: string, requestTokenSecret: string, verifier: string ) => new Promise<oauthTokenCallback>((resolve) => this.oauth.getOAuthAccessToken( requestToken, requestTokenSecret, verifier, (err, token, tokenSecret, query) => { resolve({err, token, tokenSecret, query}); })); try { const _requestTokenResult = getOAuthRequestToken({ 'scope': ... }); const _rk = this.getRK(); const requestTokenResult = await _requestTokenResult; const rk = (await _rk) as string; const rkm = ... const verifier = ... const accessTokenResult = await getOAuthAccessToken( requestTokenResult.token, requestTokenResult.tokenSecret, (await verifier) as string ); console.log(">>>Congraturations!!<<<"); ... } catch (reason) { console.log(reason); ... } }
型エイリアスとしてoauthTokenCallback
を定義し、
Promiseのコールバックの型として設定する。
あとはtry
でかなり大きく囲むのがちょっと気になったけど、
Promise#then
でチェーンするときと同じかと思うと気にならなくなった。