11

Facebookユーザーのアクセストークンの有効期限が切れており、トークンを更新する必要があるコードパスをテストしたいと思います。アクセストークンは、作成後2か月で有効期限が切れることに気づきました。そのコードパスをテストするのに2か月待ちたくないので、この有効期限をシミュレートする方法が必要です。次の謎についてこの状況をテストしないと、コードがクラッシュするのではないかと心配しています。

  1. 現在、アプリの起動時[FBSession openActiveSessionWithReadPermissions:permArray allowLoginUI:NO completionHandler:someFunction]に、過去にすでに接続しているFacebookユーザーをサイレントに再接続するように呼び出します。allowLoginUIがNOであることに注意してください。ユーザーがトークンを再ログインして更新できるようにするには、YESである必要がありますか、それともトークンをサイレントに更新できますか?
  2. openActiveSession *呼び出しの完了ハンドラーは、セッション状態が変化するたびにトリガーされます。FBSessionStateOpen2つの注目すべき状態はとFBSessionStateOpenTokenExtendedです。トークンが拡張されると、ステートマシンはトークン拡張状態のままになりますか、それとも拡張状態になり、すぐにオープン状態になりますか?状態遷移を知る必要があるので、ハンドラーを2回実行しません。
  3. nilになりますか[FBSession activeSession].accessToken、それとも古い期限切れのトークンとして残りますか?
  4. 同様に[FBSession activeSession].expirationDate:それはnil、古い有効期限ですか、それとも自動的に新しい有効期限になりますか?
4

1 に答える 1

5

トークンを期限切れにする最も簡単な方法は、コンピューターで FB にログインし、App Center に移動して [マイ アプリ] をクリックし、アプリの横にある小さな X をクリックしてアプリを削除することです。これにより、トークンが「期限切れ」になります。これが発生すると、ユーザーの操作なしにトークンを自動的に更新することはできません。認証 UI を再度開く必要があり、ユーザーは [許可] をクリックする必要があります。

あなたの質問に関して:

  1. allowLoginUI は YES でなければなりません。トークンの有効期限が切れた場合、ユーザーは新しいトークンを取得する前に UI を操作する必要があり、トークンを NO に設定するとサイレントに失敗します。

  2. TokenExtended 状態は、現在アクティブなトークンを拡張する場合にのみ発生すると思います。2 か月の期間が終了する前にユーザーがアプリを使用すると、FB SDK は定期的にトークンを自動的に延長します。ただし、これは期限切れのトークンを更新することと同じではありません。ただし、この状態をテストしていないため、これについて 100% 確信があるわけではありません。

  3. トークンの有効期限が切れた場合、次にアプリを起動するときに、AppDelegate メソッド (didFinishLaunching) の 1 つで openActiveSession を呼び出す必要があります。これにより、Closed または LoginFailed の状態で完了ハンドラーがトリガーされます。この時点で、[FBSession.activeSession closeAndClearTokenInformation]; を呼び出す必要があります。チュートリアルに従って、アクセストークンを無効にします。
  4. #3と同じ
于 2012-09-28T18:11:20.610 に答える