2011-08-16 7 views
0
- (id)init { 
if (self == [super init]) { 
    facebook = [[Facebook alloc] initWithAppId:kAppId]; 

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

    if (![facebook isSessionValid]) { 
     permissions = [[NSArray arrayWithObjects: 
         @"read_stream", @"user_birthday", 
         @"publish_stream", nil] retain]; 
     [facebook authorize:permissions delegate:self]; 
    } 

    [self login]; 
} 
return self; 

} 

- (void)login { 
if (![_session isConnected]) { 
    [self postToWall]; 
} 


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

- (void)fbdidLogin { 
[[NSUserDefaults standardUserDefaults] setObject:self.facebook.accessToken forKey:@"FBAccessToken"]; 
[[NSUserDefaults standardUserDefaults] setObject:self.facebook.expirationDate forKey:@"FBExpirationDate"]; 

// User has logged in to Facebook, now get their userId from Facebook 
[facebook requestWithGraphPath:@"me" andDelegate:self]; 
} 

-(void)postToWall 
{ 
SBJSON *jsonWriter = [[SBJSON new] autorelease]; 

NSDictionary *actionLinks = [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys: 
                 @"Always Running",@"text",@"http://itsti.me/",@"href", nil], nil]; 

NSString *actionLinksStr = [jsonWriter stringWithObject:actionLinks]; 
NSDictionary *attachment = [NSDictionary dictionaryWithObjectsAndKeys: 
          @"Your Happiness!", @"name", 
          @"asda", @"caption", 
          @"asdf", @"description", 
          nil]; 
NSString *attachmentStr = [jsonWriter stringWithObject:attachment]; 
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
           @"Share on Facebook", @"user_message_prompt", 
           actionLinksStr, @"action_links", 
           attachmentStr, @"attachment", 
           nil]; 


[facebook dialog:@"stream.publish" andParams:params andDelegate:self]; 

} 

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 

return [facebook handleOpenURL:url]; 
} 

これは私のFacebookのダイアログボックスを呼び出すための私の方法です。しかし、私は出版のためにスコアをクリックするたびに、許可ボックスが来ました。公開ダイアログボックスが来たら許可を与える必要があります。私はそれを保存したい、それを保存した後、私は再度許可ボックスを見たいとは思わない。私はそれをどうやって行うことができる?私のコードで何が間違っていますか?なぜfbdidloginが呼び出されなかったのですか?

編集: 私のアクセストークンと有効期限はnullです。これはそのためです。

答えて

1

いくつか確認するには、fbDidLoginの代わりにメソッドのログイン処理メソッド "fbdidLogin"を呼び出します。大文字と小文字が区別されます

サポートしているプロトコルの1つとしてFBSessionDelegateを追加したことを、View Controllerヘッダーファイルで確認してください。 fbDidLoginが呼び出されない理由が考えられます。いつでもNSLogを追加して、fbDidLoginメソッドに達していることを確認できます。

+0

私はfsDidloginでnslogをチェックし、FBSession Delegateが含まれていることを確認します。 –

+0

確かに、ヘッダーファイルを投稿し、最新の実装ファイルを再投稿してください。 –

+0

私はすべてを削除し、おそらく古いものに欠けているものをもう一度書き込む –

0

Facebookのシングルサインオン機能を実装する必要があります。

http://developers.facebook.com/docs/guides/mobile/#ios

このリンクは、あなたのアプリケーションは一度許可を要求します慎重にそれに従うならば、ユーザは自分のアプリケーションを削除するまで、それは(再び許可を要求することはありません、SSOを実装するためのステップバイステップガイドを持っています)

www.facebook.comにアクセスし、「開発ツール」を使用して新しいFacebook Appを作成し、その管理者になるとAppID、これも必要になります。

+0

ええ私は私のアプリケーションを作るためにこのページを見ていますが、私はアプリケーションのページにない別のviewcontrollerからfacebookを呼び出しています。 –

+0

もう一度チェックしますが、なぜ私は行方不明ですか?それ以上の助け? pls –

関連する問題