我正在尝试从我的 native iOS 应用程序中向 facebook 发布一个简单的 url。我所做的是:
facebook = [[Facebook alloc] initWithAppId:FB_APP_ID andDelegate:delegate];
然后在某个时候
[facebook authorize:permissions];
此时我的应用程序退出,它让我进入 safari 和权限页面,而不是向我展示一个登录对话框(在我的应用程序内),我在其中登录,然后点击帖子或其他只是发布到我的墙上。
我很确定这是一个简单的问题,但由于这是我第一次进行 facebook 集成,因此配置它对我来说很痛苦,而且文档也没有太大帮助。
感谢任何帮助!谢谢!
最佳答案
如果您确实需要删除到 Safari 或 Facebook 应用程序的重定向,您应该打开 FBConnect Facebook.h 类并找到以下方法:
- (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth
safariAuth:(BOOL)trySafariAuth {
你需要声明你不想被重定向到任何地方,为此将这两个 bool 值设置为 NO
- (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth
safariAuth:(BOOL)trySafariAuth {
tryFBAppAuth = NO;
trySafariAuth = NO;
接下来,要将内容张贴到墙上,您有两种选择。一个坏了 - 标准的 facebook 对话窗口,一旦你在你的应用程序中的任何地方显示任何 UIAlertView
,它将把键盘带到实际的 webview 后面,因此不要使用它。而是使用您自己的自定义界面,其中包含一个简单的 UITextView
区域和一个 push to wall outlet 按钮。以下是从自定义 View 发布到墙上所需的方法:
- (void)facebookPostToWallWithMessage:(NSString *)message {
sharedInstance.facebookDelegate = delegate;
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
message, @"message", // The status message
nil];
pushMessageRequest = [facebook requestWithGraphPath:@"me/feed"
andParams:params
andHttpMethod:@"POST"
andDelegate:self];
}
下面是您需要的委托(delegate)方法,以便通知用户他们已发布更新或通知他们更新失败:
- (void)request:(FBRequest *)request didLoad:(id)result {
if (request == pushMessageRequest) {
NSLog(@"message has been posted, inform delegate");
}
}
- (void)request:(FBRequest *)request didFailWithError:(NSError *)error {
if (request == pushMessageRequest) {
//failed to post message, inform delegate
//[facebookDelegate facebookFailedToPostToWallWithMessage:error.localizedDescription];
}
}
关于objective-c - 如何使用最新的 Facebook SDK 从 iOS 向 Facebook 发布内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9331982/