2011-06-08 5 views
0

私の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]; 

これは、いくつかのケースを除き、正常に動作します:新しいログインダイアログが新しい権限を求める前にユーザーに表示されていること起こるかもしれません。

これは、ユーザーが異なる資格情報でログインする可能性があり、セッションが壊れてしまう可能性があるため、実装に問題があります。

これがなぜ起こっているのかわかりませんが、ユーザーにオフラインアクセスも依頼しています。 私はまだアクセストークンと有効期限の設定が実際に必要かどうか疑問に思っています。

答えて

0
Facebook *facebook = [[Facebook alloc] initWithAppId:@"YOUR_APP_ID"]; 
//facebook.accessToken = /* read access token from user defaults */; 
//facebook.expirationDate = /* read expiration date from user defaults */; 

[facebook setAccessToken:urtoken]; 

[facebook setExpirationDate:expdate]; 


NSArray *permissions = [NSArray arrayWithObject:@"publish_stream"]; 

if(![facbook isSessionValid]) 
{ 
[facebook authorize:permissions delegate:self]; 
} 
+0

私は、セッションの寛大な拡張許可を求める必要があります。この場合、IFは間違っています。 – nebillo

+0

拡張パーミッションが必要な場合は、それらをurパーミッション配列に追加し、[facebook authorize:permissions delegate:self]を使用します。 –

+0

問題は、ユーザーが既にログオンした後に他のアクセス権を要求しています。 fb sdk SOMETIMESは "authorize"を呼び出すと新しいログインダイアログを表示しますが、これはユーザーが別のアカウントでログインする可能性があるため問題です。 – nebillo

関連する問題