2011-07-05 17 views
0

私のアプリでは、ユーザーはFacebookの壁にリンクを投稿できます。しかし、Facebookのアプリがすべての(基本的な)パーミッションを明示的に求めているということは、私のクライアントにとっては問題ではないので、SDKの「authorize」メソッドを使用してログインすることはできません。したがって、すぐにFacebookのダイアログを使用します。iOS facebook SDK - ダイアログ - 移動ボタン

NSMutableDictionary *のparams = [NSMutableDictionary dictionaryWithObjectsAndKeys: "http://www.google.at" @ 、 "リンク" @はnil];

[self.facebookダイアログ: andDelegateのparams: "フィード" andParams @自己]。

これはうまく動作しますが、ログインした後、ユーザーが自分の壁に投稿することができたときに、公開&は、キャンセルボタンが常に画面(スクリーンショットを参照)をオフに移動します。下にスクロールすると、ボタンはすぐに画面から再び動きます。これは、ログインに成功した後には発生しません。誰も私がどのように画面上にボタンを保持することができるか知っていますか?それ以外の場合、ユーザーはリンクを投稿できません。

私はこの解決策を見つけましたが、少なくとも私にとっては動作しません:https://github.com/facebook/facebook-ios-sdk/issues/329

screenshot http://dl.dropbox.com/u/12018803/facebookPosting.png

+0

他の人も同様に、このFacebookのバグを経験している:[バグレポート](http://bugs.developers.facebook.net/show_bug.cgi?id=18760)。私はfacebookがすぐにこれを修正することを願っています。 – Reinhold

答えて

3

私は同じ問題 を持っていたし、多くの時間を失っていると何の解決策が、回避策を見つけていません。

私があれば、私はFacebookを利用してALLOC - (void) openMyFacebook, にopenMyFacebook

を呼び出して見える三つの方法

- (void) openMyFacebook 
- (void) fbDidLogin 
- (void) dialogFacebook 

をそこに持っている私は、デリゲートに[facebook authorize:nil delegate:self]; を呼び出さない場合 はすでにNSUserDefaults 内のキーを格納している​​私は鍵を保管する(ファズブックの例でも同じ)。 その後、トリックが来ます。

リリースfacebookで

[facebook release]; 
facebook = nil; 

と格納された鍵で再び- (void) openMyFacebook を開始します。

完璧に動作します。

- (void) openMyFacebook { 

    if (facebook == nil) { 

     facebook = [[Facebook alloc] initWithAppId:@"xxxxxxxxxx"]; 
    } 

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

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

     [self dialogFacebook]; 
    } 

} 

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

//release!!!! 
    [facebook release]; 
    facebook = nil; 
//and start again 
    [self openMyFacebook]; 
} 

- (void) dialogFacebook { 

NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
           kAppId, @"app_id", 
           linkextern, @"link", 
           facebookImageUrlString, @"picture", 
           name, @"name", 

           @" ", @"message", 
           nil]; 

[facebook dialog:@"feed" andParams:params andDelegate:self]; 
} 
関連する問題