Iphone facebook连接示例调用safari。我不想使用safari。如何解决这个问题。
答案 0 :(得分:14)
我不确定这是否是犹太洁食,但我在Facebook.m
中注释了第131-145行以弹出UIWebView
而不是在Safari中打开登录屏幕。似乎对我来说很好......
答案 1 :(得分:6)
Donkim的上述建议对我使用SDK的1/31/2011提交效果很好。另一种选择是在Facebook.m中查找每次调用“authorizeWithFBAppAuth:safariAuth:”。您可以在第221,267和274行将第二个参数从YES更改为NO。
答案 2 :(得分:2)
尽管它打开野生动物园并且那很难看,但是你可以从SSO中受益,这是一个很棒的功能。如果任何其他应用程序正在使用FBConnect,您的用户将自动连接到您的用户。如果Facebook应用程序存在,它甚至更好,登录是通过Facebook应用程序完成的,不再是在safari中。
所以我建议你保持这种状态!
我同意整个过程应该有所改进,每次连接时至少不要打开新的Safari选项卡!耐心...
答案 3 :(得分:2)
如果用户有iphone的Facebook应用程序,那么它将无法打开Safari。 它将直接打开Facebook App
答案 4 :(得分:1)
所有这些解决方案的问题是您失去了一致的auth_token。因此,如果您需要稍后在代码中通过传递URL中的auth_token来执行手动图形请求,则根本不能。
答案 5 :(得分:1)
设置safariAuth:NO [self authorizeWithFBAppAuth:YES safariAuth:NO]; (facebook.m:221)
答案 6 :(得分:0)
对于使用较新的Facebook iOS SDK的用户(不确定添加了哪个版本),您可以使用dialog:@"oauth" ...
方法(doc)。正如其他人所说的那样,你放弃了SSO,但对于像我这样的用例(一个OpenGL游戏),我发现叠加层更适合切换到另一个应用程序。
答案 7 :(得分:0)
档案:Facebook.m |开始于:第220行authorizeWithFBAppAuth:safariAuth:
|将布尔trySafariAuth = NO;
添加到第223行
/**
* A private function for opening the authorization dialog.
*/
- (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth
safariAuth:(BOOL)trySafariAuth {
trySafariAuth = NO;
// more code allow blow this, but im too lazy to show it
// so please just change the boolean...
}
答案 8 :(得分:0)
Change following method as follows in facebook.m
- (void)authorize:(NSArray *)permissions
delegate:(id<FBSessionDelegate>)delegate {
[_permissions release];
_permissions = [permissions retain];
_sessionDelegate = delegate;
[self authorizeWithFBAppAuth:NO safariAuth:NO];
// [self authorizeWithFBAppAuth:NO safariAuth:YES];
}