0

私は Facebook のドキュメントをたくさん読みましたが、セッション オブジェクトの役割についてかなり混乱しています。たとえば、次のメソッドを使用します。

session = [FBSession sessionForApplication:myApiKey secret:myAppSecret delegate:self];

何かを行うためにデリゲート コールバックを待機する必要があると思われる場合、返されたセッション オブジェクトをどうすればよいでしょうか?

第 2 に、後でアプリを実行したときに、ユーザーが以前の実行中に自分のアカウントへのアクセスを許可した場合、セッション オブジェクトへの参照を取得して、Facebook アカウントに接続し、ステータスなどを投稿できるようにするにはどうすればよいですか? ? ドキュメントでは [セッションの再開] について言及されていますが、そのセッション参照がどこから来るべきかについては言及されていません。(そして [[FBSession session] resume] を呼び出すとコンパイルされますが、動作しません。)

ありがとう。

4

2 に答える 2

2

何かを行うためにデリゲート コールバックを待つ必要があると思われる場合、返されたセッション オブジェクトをどうすればよいでしょうか?

を作成FBLoginDialogしてユーザーに表示する必要があります。デリゲート メソッドは、ユーザーがログインするまで呼び出されません。最初にセッション インスタンスを作成することとは関係ありません。

Facebook アカウントに接続できるように、セッション オブジェクトへの参照を取得するにはどうすればよいですか

Facebook Connect ライブラリは、セッション情報をアプリのユーザー デフォルトに保存します。保存するために何もする必要はありません。私が理解しているように、アプリを起動するたびに、でセッションオブジェクトを作成して+sessionForApplication:secret:delegate:から呼び出す必要があります[session resume]。FBConnect ライブラリがユーザーの既定値に保存されている有効なセッションを検出すると、戻りYES、ユーザーがログインしているので続行できます。 がresume返された場合はNO、ログイン ダイアログを表示する必要があります。

Facebookのドキュメントから:

セッション情報はアプリケーションの設定で iPhone ディスクに保存されるため、アプリケーションを使用するたびにユーザーにログインを求める必要はありません。セッション オブジェクトを作成したら、[session resume] を呼び出して前のセッションを再開します。セッションの有効期限が切れているか、まだセッションを作成していない場合は、NO が返され、ユーザーにログインを求める必要があります。セッションは、非アクティブ状態が 2 時間続くと期限切れになります。

于 2010-02-09T03:06:00.120 に答える
1

これは、すべてがそこにあるため、Oleの回答とコメントから実際に続いています。これが私がしたことです。

最初にセッション オブジェクトを作成します。

facebookSession = [[FBSession sessionForApplication:SESSION secret:SECRET delegate:self]retain];    
[facebookSession resume];

2 行目は、ユーザーがログオン状態を維持することを指定した場合に、ログオン状態を維持するために設定ファイルからセッション データを取得します。

メソッドを実装する必要があります。

- (void)session:(FBSession*)session didLogin:(FBUID)uid

何にも使わないのに。

ユーザーが既にログオンしているかどうかを確認するには、次のように呼び出します。

[[FBSession session] isConnected]

次に、ログイン ダイアログを表示するか、既にログオンしている場合は直接公開ダイアログを表示します。

于 2010-02-10T10:28:17.300 に答える