使用新的 sdk 在我的 facebook 墙上发布

Posted

技术标签:

【中文标题】使用新的 sdk 在我的 facebook 墙上发布【英文标题】:publishing on my facebook wall using new sdk 【发布时间】:2012-08-30 09:35:01 【问题描述】:

我正在使用新的 Facebook SDK 通过关注 their instructions 在我的墙上发布内容

我获得了应用程序的授权,但是当我尝试发布时出现错误 Error: HTTP status code: 400 下面我发布我的代码

 - (void)viewDidLoad

self.postParams =
 [[NSMutableDictionary alloc] initWithObjectsAndKeys:
 @"https://developers.facebook.com/ios", @"link",
 @"https://developers.facebook.com/attachment/iossdk_logo.png", @"picture",
 @"Facebook SDK for iOS", @"name",
 @"build apps.", @"caption",
 @"testing for my app.", @"description",
 nil]; 

[self.postParams setObject:@"hgshsghhgsls" forKey:@"message"];

[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.


-(IBAction)Post
AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
[appDelegate openSessionWithAllowLoginUI:YES];


[FBRequestConnection   startWithGraphpath:@"me/Mac" parameters:self.postParams HTTPMethod:@"POST"
                        completionHandler:^(FBRequestConnection *connection,id result,NSError *error) 
                            NSString *alertText;
                             if (error) 
                             alertText = [NSString stringWithFormat:@"error: domain = %@, code = %d, des = %d",error.domain, error.code,error.description];
                              
                             else 
                             
                             alertText = [NSString stringWithFormat:@"Posted action, id: %@",[result objectForKey:@"id"]];
                             
                             // Show the result in an alert
                             [[[UIAlertView alloc] initWithTitle:@"Result" message:alertText delegate:self cancelButtonTitle:@"OK!"
                             otherButtonTitles:nil]show];
                        ]; 





我在这里做错了什么,任何建议都会很好,这个新的 SDK 是 beta 版本?还是完整的?

【问题讨论】:

能否请您发布整个错误行?做一个 NSLog(@"%@", error);然后你会看到整个描述,为什么它会抛出 400 错误。或者发布您的警报输出消息... 2012-08-30 14:33:05.225 NewFbLogin[1275:fe03] 错误:HTTP 状态码:400 抱歉这个愚蠢的问题,但你有一个有效的登录和 facebook 会话?不妨听听这个:developers.facebook.com/docs/tutorials/ios-sdk-tutorial/… 这是 nslog 并且错误足够大,我无法完全发布 .Error Domain=com.facebook.sdk Code=5 "操作无法完成。(com.facebook.sdk 错误 5 .)" UserInfo=0x6b8ab10 com.facebook.sdk:ParsedJSONResponseKey=type = mutable dict, count = 2, 另一个问题:我/Mac 是什么?必须是我/饲料,如果你想发布…… 【参考方案1】:

如果您遇到任何问题,请尝试通过在您有兴趣调试的请求调用之前添加此代码来打开日志记录:

[FBSettings setLoggingBehavior:[NSSet setWithObjects:FBLoggingBehaviorFBRequests, FBLoggingBehaviorFBURLConnections, nil]];

【讨论】:

很棒的提示。感谢分享。【参考方案2】:

最后我解决了这个问题,因为我必须在我的应用权限页面中将 Auth Token 参数更改为 URLFragment 然后它才能工作

【讨论】:

您好 AnswerMe,您能解释一下解决方案是什么吗?当您说您的应用许可页面时,您是指在 developer.facebook.com 上吗?也许一步一步你做了什么?谢谢。 在 developer.facebook.com 上是的,我选择了我的应用程序,然后编辑设置,在下一页我选择了左侧的权限,在那个 Auth Token Parameter 选项中,我更改为 URL Fragment 选项。这就是我所做的一切,它正在工作 感谢您的回答。我遇到了同样的错误,并在this question 上用正确答案解决了它,但也许这会对某人有所帮助。我不知道为什么有人对你投了反对票。 我改变了这个参数,但还是没有运气:( 和我一样。你们有谁解决了吗?如果你能帮忙就太好了。谢谢。【参考方案3】:

我在我的项目中使用了这个框架。它工作正常。这是我的相关代码

   -(IBAction)logIn:(id)sender;

AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if (!FBSession.activeSession.isOpen) 
    [appdelegate sessionOpener];

else 
    [self loginHelp];

我的 sessionOpener 函数是;

 -(void) sessionOpener

[FBSession sessionOpenWithPermissions:nil
                    completionHandler:^(FBSession *session,
                                        FBSessionState status,
                                        NSError *error) 
                        // session might now be open.
                        if (!error) 
                            [self.viewController loginHelp];
                        
                    ];

 NSLog(@"%d", FBSession.activeSession.isOpen);
NSLog(@"%@", FBSession.activeSession.description );

它对我有用。可能对你有帮助。

【讨论】:

【参考方案4】:

检查会话发布权限。

效果很好。

[FBSession openActiveSessionWithPublishPermissions:[[NSArray alloc] initWithObjects:@"publish_stream",@"email", nil]
                                   defaultAudience:FBSessionDefaultAudienceFriends
                                      allowLoginUI:YES
                                 completionHandler:^(FBSession *session,
                                                     FBSessionState state, NSError *error) 
                                     [self sessionStateChanged:session state:state error:error];
                                 ];

【讨论】:

以上是关于使用新的 sdk 在我的 facebook 墙上发布的主要内容,如果未能解决你的问题,请参考以下文章

使用 ios facebook SDK 3.1 在墙上发布

Facebook iOS SDK 3.0 贴在墙上

使用 Facebook Android SDK 在 Facebook 墙上发帖,无需打开对话框

无法使用java在我的Facebook墙上发布

iOS Facebook SDK 3 帖子在我的时间线上看不到朋友的帖子

Android - 使用 facebook sdk 在 facebook 墙上发帖的问题