B3 Global Accounts로 인증 구현 방법을 배우세요
import { SignInWithB3 } from "@b3dotfun/sdk/global-account/react";
function GoogleAuth() {
return (
<SignInWithB3
provider={{ strategy: "google" }}
partnerId="your-partner-id"
onLoginSuccess={(globalAccount) => {
console.log("Google 인증 성공:", globalAccount);
}}
onLoginError={(error) => {
console.error("인증 실패:", error);
}}
/>
);
}
import { SignInWithB3 } from "@b3dotfun/sdk/global-account/react";
function DiscordAuth() {
return (
<SignInWithB3
provider={{ strategy: "discord" }}
partnerId="your-partner-id"
onLoginSuccess={(globalAccount) => {
console.log("Discord 인증 성공:", globalAccount);
}}
/>
);
}
import { SignInWithB3 } from "@b3dotfun/sdk/global-account/react";
const b3Chain = {
id: 8333,
name: "B3",
nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
rpc: "https://mainnet-rpc.b3.fun",
};
function SessionKeyAuth() {
return (
<SignInWithB3
provider={{ strategy: "google" }}
chain={b3Chain}
partnerId="your-partner-id"
sessionKeyAddress="0x..." // MetaMask 또는 다른 지갑 주소
onLoginSuccess={(globalAccount) => {
console.log("세션 키 인증됨:", globalAccount);
}}
/>
);
}
function AdvancedSessionAuth() {
const sessionKeyConfig = {
permissions: {
approvedTargets: ["0x..."], // 특정 계약 주소
startDate: new Date(),
endDate: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000), // 30일
nativeTokenLimitPerTransaction: 0.0001, // 거래당 ETH 한도
}
};
return (
<SignInWithB3
provider={{ strategy: "google" }}
chain={b3Chain}
partnerId="your-partner-id"
sessionKeyAddress="0x..."
sessionKeyConfig={sessionKeyConfig}
onLoginSuccess={(globalAccount) => {
console.log("고급 세션 키 설정:", globalAccount);
}}
/>
);
}
import { authenticate } from "@b3dotfun/sdk/global-account/app";
async function authenticateUser(accessToken: string, identityToken: string) {
try {
const authResult = await authenticate(accessToken, identityToken, {
// 추가 구성
});
if (authResult) {
console.log("인증 성공:", authResult);
return authResult;
} else {
console.log("인증 실패");
return null;
}
} catch (error) {
console.error("인증 오류:", error);
throw error;
}
}
// React Native 애플리케이션을 위해
import { authenticate } from "@b3dotfun/sdk/global-account/app";
async function authenticateInReactNative() {
const result = await authenticate("access-token", "identity-token");
return result;
}
import { useB3 } from "@b3dotfun/sdk/global-account/react";
function AuthStatus() {
const {
account,
isAuthenticated,
isLoading,
signOut
} = useB3();
if (isLoading) return <div>로딩 중...</div>;
return (
<div>
{isAuthenticated ? (
<div>
<p>환영합니다, {account?.displayName}!</p>
<button onClick={signOut}>로그아웃</button>
</div>
) : (
<p>로그인 해주세요</p>
)}
</div>
);
}
import { useAccountWallet } from "@b3dotfun/sdk/global-account/react";
function WalletInfo() {
const { wallet, isConnected } = useAccountWallet();
return (
<div>
{isConnected && (
<div>
<p>지갑 주소: {wallet?.address}</p>
<p>체인 ID: {wallet?.chainId}</p>
</div>
)}
</div>
);
}
function AuthWithErrorHandling() {
const [authError, setAuthError] = useState<string | null>(null);
return (
<div>
<SignInWithB3
provider={{ strategy: "google" }}
partnerId="your-partner-id"
onLoginSuccess={(globalAccount) => {
setAuthError(null);
console.log("성공:", globalAccount);
}}
onLoginError={(error) => {
setAuthError(error.message);
console.error("인증 오류:", error);
}}
/>
{authError && (
<div className="error">
인증 실패: {authError}
</div>
)}
</div>
);
}