在我的应用中,用户可以发布到他的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
答案 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];
}