facebooksdk3.0を使用しています。
レシーバーでFacebookセッションを使用したいのですが。しかし、セッションが期限切れになった場合はどうすればよいですか?
facebooksdk3.0を使用しています。
レシーバーでFacebookセッションを使用したいのですが。しかし、セッションが期限切れになった場合はどうすればよいですか?
SDK は、ここで行おうとしていることとは少し異なる使い方をするように設計されています。Session
オブジェクトの状態を自分で処理する必要はまったくありません。Scrumptious チュートリアルをご覧ください。
その認証セクションでは、セッション状態の変更を処理する方法が明確に示されています。
基本的に、Facebook は、アプリで Facebook 機能が必要な場所に含める必要があるUI ライフサイクル ヘルパー クラスを提供します。これらのヘルパーは、セッションがアクティブか、期限切れかなどを判断onSessionStateChanged()
し、セッション状態が変化するたびにメソッドを呼び出します。
このメソッドで簡単なチェックを実行し、ユーザーを適切にリダイレクトするだけです。たとえば、セッションの有効期限が切れた場合、Facebook ログイン ボタンがあるログイン ページにユーザーをリダイレクトすることができます (このボタンは SDK で facebook によって提供され、認証フローを処理します。ユーザーにアクセス許可を要求します)。 、何もする必要なくセッションなどを認証します)。
チュートリアルを 1 回実行すると、理解が深まると思います。お役に立てれば。
facebook android sdk 3.0では、セッションの有効期限が切れた場合、既存のトークンでセッションを再度開く必要があります。これは、アクティビティ(UIスレッドコンテキスト)以外からも実行できます。
期限切れのセッションを再開する場合
public void openSession(Context context)
{
Looper.prepare()
Session session = new Session(context, APP_ID, null, true);
session.openWithImportedAccessToken(accessToken, new Date(tokenExpiryTime), new Date(tokenExpiryTime), AccessTokenSource.FACEBOOK_APPLICATION, Arrays.asList(APP_PERMISSIONS), null);
Looper.loop()
}
これを実装する前に、looper.prepare&loopメカニズムをお読みください。
https://github.com/facebook/facebook-android-sdk/blob/master/samples/GraphApiSample/src/com/facebook/samples/graphapi/GraphApiSampleActivity.java#L136-L142でコードを試しましたか
private Session createSession() {
Session activeSession = Session.getActiveSession();
if (activeSession == null || activeSession.getState().isClosed()) {
activeSession = new Session.Builder(this).setApplicationId(applicationId).build();
Session.setActiveSession(activeSession);
}
return activeSession;
}
これは、セッションがアクティブかどうかを検証し、アクティブでない場合は新しいセッションを作成します。
Facebookの開発者サイトに次のように書かれていることがわかりました:</p>
Facebook アプリ用にアプリ アクセス トークンを生成できます。他のトークンとは異なるログイン フローでアプリ アクセス トークンを生成します。これはコードで行うことができます。
このタイプのトークンは、アプリの設定の変更、テスト ユーザーの作成と管理、または App Insights データの読み取りに役立ちます。アプリ トークンを使用して、アプリのアクセス許可を付与したユーザーに代わってコンテンツを公開または削除できます。たとえば、ユーザーがアプリに publish_stream アクセス許可を付与した場合、アプリはアプリ アクセス トークンを使用して、ユーザーに代わってステータスの更新を公開できます。
アプリ シークレットがリセットされない限り、アプリ トークンは期限切れになりません。アプリ アクセス トークンは、各アプリに固有です。
したがって、これを処理する必要はないようです。必要に応じて、何らかの問題でトークンの有効期限が切れたときに、通知バーにメッセージを表示できます。