見出し画像

【完全保存版】Web3Authを使って、Astarでソーシャルログインを実装しよう!

0 はじめに

この記事は、こちらのYouTubeを元にして、ソーシャルログインができる、「Web3Auth」のやり方を紹介しています。

1 やってみよう

1 git clone を行う

下のように、git cloneを行って、ディレクトリを移動します。

git clone https://github.com/tahirahmadin/web3-onboarding-starter-kits.git
cd web3-onboarding-starter-kits/  

なお、こちらのGithubを使用しています。

2 依存関係のインストール

次に、依存関係をインストールします。

yarn install

3 立ち上げる

次のコマンドで立ち上げます。

yarn start

するとこのように成功しました。

4 ログインについて

localhost:3000を確認すると、下のように立ち上がっていました。

「Login」でログインします。

すると、このように、何でサインインを行うのかのポップアップが出ました。

今回私は、Googleログインを選択しました。

「アカウントの選択」が立ち上がったので、任意のアカウントでサインインを行います。

ちなみに、ブラウザによってはあまりうまくいかないかもしれません。

私の場合は、「Google Chrome」でうまくいかず、「Brave」で行ったところ、うまくいきました。

このようなポップアップが立ち上がり、うまく接続できたようです。

5 値の取得について

では、色々と探ってみましょう。

例えば、「Get User Info」を押すと、このように、Eメールの情報などを取得することができました。

また、下のように、チェーンIDや残高なども取得することができました。

初めてやった時は、残高は0だと思います。

また、初期設定では、Mumbai(チェーンID:80001)となっていると思います。

2 コードを読んでみよう

では、コードを読んでみましょう。

「App.js」を見てみます。

1 Web3Authのインスタンス作成

下のように、「clientId」「chainConfig」を使って、「Web3Auth」インスタンスを作っていることがわかります。

clientId」は元々Githubに埋め込まれているので、そのまま使えてしまいますが、本来は別のところに保管したほうがよさそうだと思いました。

2 chainIdについて

chainIdは一見見覚えがないですが、これを10進数に直すと、80001(mumbaiのチェーンID)となります。

また、rpcTargetmumbaiのRPCエンドポイントを設定しているようです。

3 chainNamespaceについて

「chainNamespace」は下のようになっていました。

EVM系の場合は、「EIP155」を使用します。

https://web3auth.io/docs/sdk/pnp/web/modal/initialize#chainconfig

取得した「web3auth」は下のようにセットしています。

4 モーダルの初期化について

次に、こちらの、「initModal」を確認していきましょう。

その名の通り、モーダルを初期化しているようですね。

https://web3auth.io/docs/sdk/pnp/web/modal/initialize#initmodal

最後にプロバイダーをセットしています。

5 ログイン部分について

では、ログイン部分を見てみましょう。

「connect」が実施されています。

公式を見ると、モーダルを表示させる役割を果たしているようです。

そして、返り値は「IProvider」インスタンスであることも確認できました。

6 ユーザー情報の取得について

次は、こちらの、「getUserInfo」関数を確認します。

下のようにユーザー情報を取得していることが確認できました。

https://web3auth.io/docs/sdk/pnp/web/modal/usage#getuserinfo

7 web3auth以外の処理について(getAccounts)

次に、「getAccounts」を確認します。

ここからは少し変わります。

「web3RPC.js」を見てみましょう。

すると、このように、「Web3.js」が使用されていることがわかりました。

つまり、ログインやユーザー情報の取得などは「web3auth」が行い、それ以外の部分は「Web3.js」が使われていることがわかりました。

参考までに、アカウントの取得などはこちらが使われています。

https://web3js.readthedocs.io/en/v1.10.0/web3-eth.html?highlight=getAccounts#getaccounts

8 web3auth以外の処理について(getBalance)

また、下のように、「getBalance」を見ても、同様に、「Web3.js」が使われていることがわかります。

「getBalance」関数が使われていますね。

参考に、公式はこの部分になります。

https://web3js.readthedocs.io/en/v1.10.0/web3-eth.html?highlight=getAccounts#getbalance

他にも、「fromWei」関数などで「ether」に変換していますね。

公式としては、この辺りが該当します。

https://web3js.readthedocs.io/en/v1.10.0/web3-utils.html?highlight=fromWei#fromwei

3 Astarチェーンで行ってみよう

最後に、チェーンを変えてやってみましょう。

「App.js」のこの部分を変えればうまくいきます。

AstarのチェーンIDは「592」なので、それを16進数に変換した「0x250」が入力されています。

RPCはこの辺りを確認すればわかります。

もちろん、実務で行うときは、Alchemyなどで行うことが推奨されます。

https://docs.astar.network/docs/build/environment/endpoints/

今回は以上です。

ぜひやってみてください。

サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊