すべての ユーザー オブジェクトには、JSON web token へのアクセスに使用できるAtlas App Services トークンが含まれています。
アクセス トークンを使用して、クライアントアプリケーションから Atlas GraphQL API をクエリできます。 Atlas GraphQL API のクエリには、 graphql_flutter などの任意のGraphQLクライアントを使用して Atlas GraphQL API をクエリしますAtlas GraphQL API の設定とクエリの詳細については、App Services ドキュメントの「 Atlas GraphQL API 」を参照してください。
Retrieve the Access Token
ユーザー.accessTokenプロパティを使用してアクセス トークンを取得できます。
final token = app.currentUser?.accessToken;
アクセス トークンを更新する
アクセス トークンは、ユーザーがログインしてから 30 分期限切れになります。自動的には更新されません。User.refreshCustomData() を使用して更新します。
Future<String> getValidAccessToken(User user) async { // An already logged in user's access token might be stale. To // guarantee that the token is valid, refresh it if necessary. await user.refreshCustomData(); return user.accessToken; }
また、dart:async ライブラリから Timer.perごとにアクセス トークンを定期的に更新することもできます。User.refreshCustomData() への呼び出しをタイマーのコールバック関数でラップします。
// Refresh the token every 29 minutes Timer.periodic(Duration(minutes: 29), (_) { app.currentUser?.refreshCustomData(); });
リフレッシュ トークンの有効期限
リフレッシュ トークンは一定期間後に期限切れになります。 更新トークンの有効期限が切れると、アクセス トークンの更新ができなくなり、ユーザーは再度ログインする必要があります。
Realm が開いた後に更新トークンの有効期限が切れると、ユーザーが再度ログインするまでデバイスは同期できなくなります。 同期エラー ハンドラーには、同期試行時にトークンの期限切れエラーを検出し、ユーザーをログイン フローにリダイレクトするロジックを実装する必要があります。
リフレッシュ トークンの有効期限の設定の詳細については、App Services ドキュメントの「ユーザー セッションの管理」を参照してください。