2012-01-23 5 views
0

facebook urlで提供されている情報に従います。そのうまくいけばいいし、面白いアプリなら、そのデバイスにはない。
facebookアプリがデバイスに搭載されていないと見なします:Facebookブックとそのオープニングサファリを許可しています。私はアプリを承認し、iosアプリに戻り、FBSessionDelegateの代理人 "fbDidLogin"を呼び出します。私は上記のURLで述べたように、アクセストークンと有効期限を保存しています。その後、私はそれをFacebookに投稿することができます。これは正常に動作します。
今、facebook appがデバイス上で利用可能で、ログインしています。私が "authorize"と呼ぶと、facebook appを開き、appを承認してからios appに戻ります。 "fbDidLogin"デリゲートメソッドを呼び出すことはありません。アクセストークンと有効期限をどのように認識する必要がありますか?
私は次のコードを書いています:
facebook = [[Facebook alloc] initWithAppId:FB_APPID andDelegate:self];ios5 - facebookアプリが既に端末に登録されている場合にFacebookに投稿

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
if ([defaults objectForKey:@"FBAccessTokenKey"] 
    && [defaults objectForKey:@"FBExpirationDateKey"]) 
{ 
    facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; 
    facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; 
} 

NSArray* permissions = [NSArray arrayWithObjects:@"publish_stream",nil]; 
if (![facebook isSessionValid]) 
{ 
    [facebook authorize:permissions]; 
} 



- (void)fbDidLogin { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"]; 
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"]; 
    [defaults setBool:YES forKey:@"IIRY_FACEBOOK"];   
    [defaults synchronize]; 
} 

私がやっている間違いを指摘できますか?

答えて

0

解決策が見つかりました。問題は、Facebookのアプリに記載されているバンドルIDと私のアプリのバンドルIDが同じでないために動作しないことです。 Look the URL to know more

0

実際にあなたが許可をタップするとSafariが開き、デバイスにFacebookブックアプリがある場合はFacebookブックが開きます。それ以外の場合はSafariでFacebookが開きます。もしあなたがsafariとfacebookアプリを開こうとしないなら、facebook.mでこのステートメントをどこにでもNOに呼んでいる場所に変更してください。

[self authorizeWithFBAppAuth:NO safariAuth:NO]; 
+0

しかし、私はまだFacebookのコードを変更せずにデフォルトの機能を使いたいと思っています。しかし、Facebookの文書によると、彼らはこのような状況をどう扱うかについて何も言及していませんでした。かなり悪いです。 – Satyam

関連する問題