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でチェーンするときと同じかと思うと気にならなくなった。