セッションの取得
サーバサイド
frontend/src/app/myaccount/page.tsx
import React from 'react';
import { auth } from '@/auth';
const MyAccountPage = async () => {
  const session = await auth();
  return (
    <>
      <h1>Server Side</h1>
      <pre>{JSON.stringify(session, null, 2)}</pre>
    </>
  );
};
export default MyAccountPage;
frontend/src/app/components/ui/AccountMenu.tsx
...(略)...
import { ButtonSignOut } from '../auth/ButtonSignOut';
import Link from 'next/link'; // <- 追加
export default function AccountMenu() {
...(略)...
  return (
...(略)...
        <MenuItem onClick={handleClose}>
          <Avatar />
          <Link href="/myaccount/">My account</Link> {/* <- My accountを修正 */}
        </MenuItem>
...(略)...
  );
}
サインイン後、ブラウザで下記URLにアクセスするか、アカウントメニューからMy accountをクリックすると、下記のようにアカウント情報が表示されます。
Server Side
{
  "user": {
    "name": "【ユーザ名】",
    "email": "【メールアドレス】",
    "image": "【画像のURL】"
  },
  "expires": "【有効期限】"
}
サインアウトした後は、下記のように表示されます。
Server Side
null
クライアントサイド
frontend/src/app/components/HelloAccount.tsx
'use client';
import React from 'react';
import { useSession } from 'next-auth/react';
const HelloAccount = () => {
  const session = useSession();
  return (
    <>
      <h1>Client Side</h1>
      <pre>{JSON.stringify(session, null, 2)}</pre>
    </>
  );
};
export default HelloAccount;
frontend/src/app/page.tsx
import { SessionProvider } from 'next-auth/react'; // <- 追加
import React from 'react';
import HelloAccount from './components/HelloAccount'; // <- 追加
const Index = () => {
  return (
    <>
      {/* ↓修正 */}
      <section>
        <SessionProvider>
          <HelloAccount />
        </SessionProvider>
      </section>
      {/* ↑修正 */}
    </>
  );
};
export default Index;
サインインした状態で下記URLにアクセスすると、下記のようにアカウント情報が表示されます。
Client Side
{
  "data": {
    "user": {
      "name": "【ユーザ名】",
      "email": "【メールアドレス】",
      "image": "【画像のURL】"
    },
    "expires": "【有効期限】"
  },
  "status": "authenticated"
}
サインアウトした後は、下記のように表示されます。
{
  "data": null,
  "status": "unauthenticated"
}
ローディングの追加
frontend/src/app/components/HelloAccount.tsx
...(略)...
const HelloAccount = () => {
  const { data: session, status } = useSession();  // <- 修正
  
  return (
    <>
      <h1>Client Side</h1>
      {status === 'loading' ? <div>Loading...</div> : <pre>{JSON.stringify(session, null, 2)}</pre>}  {/* <- 修正 */}
    </>
  );
};
export default HelloAccount;
アカウント情報を読み込むまでに「Loading…」と表示されるようになりました。