Facebook对话框登录问题

5
我使用Facebook对话框来这样发布内容:
[facebook dialog:@"feed" andParams:params andDelegate:self];

如果用户在弹出对话框之前没有登录,则会在对话框中显示登录窗口。这很好,但当用户在对话框中按下“登录”按钮时,对话框会被关闭,用户必须再次调用对话框,最终在他的墙上发布我的消息。强制用户调用两次对话框非常奇怪,所以有人可以帮我解决这个问题吗?


我有完全相同的问题,但找不到答案。你会认为Facebook SDK在进入登录界面后,在登录后会自动返回到原来的位置。 我尝试先发出登录请求,然后再发布,但是如果您取消登录,则还必须关闭发布对话框。 - Darren
3个回答

2
最简单的解决方法是将您的params存储在一个ivar中。然后,当FBConnect使用fbDidLogin调用您的委托时,您可以自动重新发出dialog:andParams:andDelegate调用。
更长且更正确的解决方案是,您需要分离授权和发布步骤。您可以将fb.accessToken和过期日期存储在NSUserDefaults中,然后在第一次尝试访问FBConnect时重新调用它们。如果过期日期已过,则调用authorize:delegate以获取新的访问密钥。完成fbLogin后,再向用户发布对话框以继续。
或者,您可以不重复造轮子,并查看ShareKithttp://getsharekit.com/以获得更完整的解决方案。

0

@user979424,希望我的回答可以帮到你。我曾经也遇到过同样的问题,但是用了这段代码之后解决了。如果你还有任何问题,请随时问我。 - Dinesh Raja
在 iPhone 的 Hackbook 应用中,是否可以打开 Facebook 的登录对话框进行登录,而不是从 Safari 进行登录? - Wish
如果你想在没有Safari的情况下登录,那么你需要在Facebook.h中禁用Safari授权。请查看此链接中@rob的答案:http://stackoverflow.com/questions/9901740/facebook-api-for-ios/ - Dinesh Raja
你好 R.A,我同意你的答案。但是我正在使用 FacebookSDK.framework,没有 Faceook.m 文件,只有 facebook.h 文件。那么我应该把像 [self authorizeWithFBAppAuth:YES safariAuth:NO]; 这样的代码放在哪里呢? - Wish
对不起,直到现在我都不知道你在使用FacebookSDK。我不了解FacebookSDK,也从未尝试过。 - Dinesh Raja

0
我发现这个问题的最佳解决方案是在 (void)dialog:(FBDialog*)dialog didFailWithError:(NSError *)error 中再次调用 [facebook dialog:@"feed" andParams:params andDelegate:self]。它会在你登录后被调用,但对话框已经关闭了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接