私のiPhoneアプリケーションは、facebook sdkを使用して標準のfacebook接続機能を実装しています。 最初の手順では、オフラインアクセス許可のみがユーザーに要求されます。iphone sdkで有効なユーザーセッションで拡張アクセス権を要求する
これで、すでに認証されたユーザーへのpublish_stream権限を求める必要があります。
私がここでやっているのは、フェイスブックマネージャーのaccessTokenとexpirationDateプロパティに値を設定している、唯一の違いを持つ拡張アクセス許可を求めるために、Facebookクラスの同じ "authorize:delegate:"メソッドを使用しています。最初の認証から取得:
Facebook *facebook = [[Facebook alloc] initWithAppId:@"YOUR_APP_ID"];
facebook.accessToken = /* read access token from user defaults */;
facebook.expirationDate = /* read expiration date from user defaults */;
NSArray *permissions = [NSArray arrayWithObject:@"publish_stream"];
[facebook authorize:permissions delegate:self];
これは、いくつかのケースを除き、正常に動作します:新しいログインダイアログが新しい権限を求める前にユーザーに表示されていること起こるかもしれません。
これは、ユーザーが異なる資格情報でログインする可能性があり、セッションが壊れてしまう可能性があるため、実装に問題があります。
これがなぜ起こっているのかわかりませんが、ユーザーにオフラインアクセスも依頼しています。 私はまだアクセストークンと有効期限の設定が実際に必要かどうか疑問に思っています。
私は、セッションの寛大な拡張許可を求める必要があります。この場合、IFは間違っています。 – nebillo
拡張パーミッションが必要な場合は、それらをurパーミッション配列に追加し、[facebook authorize:permissions delegate:self]を使用します。 –
問題は、ユーザーが既にログオンした後に他のアクセス権を要求しています。 fb sdk SOMETIMESは "authorize"を呼び出すと新しいログインダイアログを表示しますが、これはユーザーが別のアカウントでログインする可能性があるため問題です。 – nebillo