Facebookがoffline_access権限を廃止した後、iOSアプリがどのように機能するかを理解しようとしています。ドキュメントは不明確で、私はそれらを数回読みました。
私がやろうとしていることは:
私は自分のiOSアプリをFBで承認します:
[_facebook authorize: [NSArray arrayWithObjects: @"email", @"publish_stream", @"user_birthday", nil]];
次に、
"me"
fromグラフAPIに、必要なFBIDを取得するように要求します。[_facebook requestWithGraphPath: @"me" andDelegate:self];
次に:
-(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開発者は彼らが導入したい機能の準備ができていないようです。