iOS facebook SDK - 对话框 - 移动按钮

时间:2011-07-05 13:34:19

标签: iphone ios facebook sdk

在我的应用中,用户可以发布到他的Facebook墙的链接。但是,我无法使用SDK中的“授权”方法登录用户,因为对于我的客户来说,facebook应用程序明确要求所有(基本)权限。因此我立即使用facebook对话框。

  

NSMutableDictionary * params = [NSMutableDictionary dictionaryWithObjectsAndKeys:   @“http://www.google.at”,@“link”,nil];

     

[self.facebook对话框:@“feed”              andParams:PARAMS           andDelegate:自];

这样可以正常工作但是在用户登录到他的墙后登录后,发布&取消按钮总是离开屏幕(见截图)。当我向下滚动时,按钮立即再次离开屏幕。成功登录后不会发生这种情况。有人知道如何将按钮保留在屏幕上吗?否则,用户无法发布链接。

我找到了这个解决方案,但至少对我来说它不起作用:https://github.com/facebook/facebook-ios-sdk/issues/329

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

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题 并且有很多时间丢失,找不到解决办法,只是解决方法。

我有三种方法

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

我打电话给openMyFacebook

- (void) openMyFacebook,中的

我分配Facebook,看看是否有 已存储在NSUserDefaults中的密钥 如果不是,我拨打[facebook authorize:nil delegate:self]; 在委托- (void) fbDidLogin中我存储密钥(在facbook示例中相同)。 然后是诀窍。

发布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];
}