2

Facebookがoffline_access権限を廃止した後、iOSアプリがどのように機能するかを理解しようとしています。ドキュメントは不明確で、私はそれらを数回読みました。

私がやろうとしていることは:

  1. 私は自分のiOSアプリをFBで承認します:

    [_facebook authorize: [NSArray arrayWithObjects: @"email", @"publish_stream", @"user_birthday", nil]];

  2. 次に、"me"fromグラフAPIに、必要なFBIDを取得するように要求します。

    [_facebook requestWithGraphPath: @"me" andDelegate:self];

  3. 次に:

    -(void)request: (FBRequest*)request didLoad: (id)result

トークンの有効期限を確認します

if ([_facebook.expirationDate timeIntervalSinceNow] < 60*60*24) // 1 day 
{ 
   [self extendAccessTokenWithAppID:kFacebookAppID 
                          appSecret:kFacebookAppSecret     
                      existingToken:_facebook.accessToken]; 
}

トークンを拡張する私のメソッドは、最初に述べたドキュメントで説明されているエンドポイントに接続するだけです。

-(void)extendAccessTokenWithAppID:(NSString*)appID appSecret:(NSString*)appSecret existingToken:(NSString*)existingToken 
{
      NSString *requestString = [NSString stringWithFormat:@"oauth/access_token?client_id=%@&client_secret=%@&grant_type=fb_exchange_token&fb_exchange_token=%@", appID, appSecret, existingToken];

      [_facebook requestWithGraphPath: requestString andDelegate: self]; 
}

私はで応答を処理します

- (void)request: (FBRequest*)request didLoad: (id)result 

しかし、私が得るのは、エンドポイントに渡したのと同じトークンと同じ有効期限です。有効期限は延長されることはなく、わずか1〜2時間です(短期間のアクセストークンの場合は通常)。これは、トークンが拡張されなかったことを意味します。

Removeoffline_access権限を無効に設定しています。

私のアプローチで何が間違っているのか知っていますか?助けてくれてありがとう!

PS StackOverflowで同様の質問を見つけましたが、どの回答も機能していません。たとえば 、offline_access権限を持つアクセストークンの有効期限

アップデート:

オフラインアクセスの削除権限を有効にすると、FBは有効期間の長いトークンのみを返します。新しいFBアカウントを作成し、このアカウントでアプリにログインして、これをテストしました。私はすぐに長命のトークンを与えられました。

オフラインアクセス権限の削除を無効にすると、ドキュメントで提供されているエンドポイントを使用して短期間のトークンを拡張しようとしても、FBは短期間のアクセストークンのみを提供します。エンドポイントは、同じ有効期限を持つ同じトークンを返します。

重大な問題は、FBが短期間のアクセストークンを提供し、エンドポイントに連絡して長期的なアクセストークンに拡張する場合、シナリオをテストできないことです。FB開発者は彼らが導入したい機能の準備ができていないようです。

4

1 に答える 1

1

ここで問題を引き起こしている可能性のあるチェック事項

  1. アプリの詳細設定でoffline_accessを無効にしました
  2. SDKの最新のコピーを使用しています。現在バージョン管理されていませんが、古いコピーはアクセストークン拡張機能をサポートしていません
  3. ドキュメントの手順に従ってSSOを構成しました
  4. ユーザーのトークンが完全に期限切れになるまで待機しました-再試行しているため、「新しい」短いトークンを取得している可能性がありますが、トークンが完全に期限切れになると、次にユーザーが戻ってきたときに、より長いトークンを取得する必要があります
于 2012-06-21T09:26:04.440 に答える