fix: Move AuthProvider to the RootApp to share between all page components #505
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
safariで3rd party tracking cookie blockingが有効なブラウザで、infoやcheck_in_event にアクセスすると /authroizeが都度走ってしまい /ui にredirectされる件の対処です。
そもそも、上記の事象は、
が原因です。
一方で、初回アクセス時に認証してaccess_tokenは取得済であり、そもそも1で /authorize のcallが走ることがよくないです。
これは、各pageごとにwithAuthProviderを実行しており、pageの切替時にAuthProviderがdestroy-and-recreateされてしまっているからです。
NextjsのPageRouterを使っている場合、_app.tsxで定義されているtop levelのRootAppであれば、pageを切り替えても引き継がれます。AuthProviderの実行をここに移すことで、pageを切り替えてもstateが維持され、/authorizeのcallが実行されないようにしました。
この対応により、safariでも/info が表示できることを確認しました。
1点、今回の対応により無認証のページが表示できなくなっています。
ただ、これに関しては別の方式で対応すべきであり、pageを切り替えても認証状態は維持される方が望ましいので、今回の対応は無認証ページが混在する場合でも導入するべきと考えます。