Iphone facebook connect示例调用safari。我不知道';我不想使用safari

Iphone facebook connect示例调用safari。我不知道';我不想使用safari,iphone,safari,facebook,Iphone,Safari,Facebook,Iphone facebook connect示例调用safari。我不想使用safari。如何解决此问题。我不确定这是否符合犹太教义,但我在Facebook.m中注释了第131-145行,以弹出一个UIWebView,而不是在Safari中打开登录屏幕。对我来说似乎工作得很好…尽管它打开了safari,这很难看,但您可以从SSO中获益,这是一个很好的功能。如果任何其他应用程序正在使用FBConnect,您的用户将自动连接到您的应用程序。如果有facebook应用程序,那就更好了,登录是通过fa

Iphone facebook connect示例调用safari。我不想使用safari。如何解决此问题。

我不确定这是否符合犹太教义,但我在
Facebook.m
中注释了第131-145行,以弹出一个
UIWebView
,而不是在Safari中打开登录屏幕。对我来说似乎工作得很好…

尽管它打开了safari,这很难看,但您可以从SSO中获益,这是一个很好的功能。如果任何其他应用程序正在使用FBConnect,您的用户将自动连接到您的应用程序。如果有facebook应用程序,那就更好了,登录是通过facebook应用程序完成的,而不再是safari

所以我建议你保持这样


我同意整个过程应该有所改进,至少不要每次连接时都打开一个新的safari标签!耐心…

若用户有iphone的Facebook应用程序,那个么它就不会打开safari。
它将直接打开Facebook应用程序

Donkim的建议在我使用2011年1月31日提交的。另一个选择是在Facebook.m中查找每个对“authorizeWithFBAppAuth:safariAuth:”的调用。您可以在第221、267和274行将第二个参数从YES更改为NO

所有这些解决方案的问题是您丢失了一致的身份验证令牌。因此,如果您以后需要在代码中通过在URL中传递auth_令牌来执行手动图形请求,则无法执行。

将safariAuth:NO设置为[self AuthorizationWithFBAppauth:YES safariAuth:NO];(facebook.m:221)

对于任何使用较新的facebook iOS SDK(不确定添加了哪个版本)的用户,您可以使用
对话框:@“oauth”…
方法()。正如其他人所说,您放弃SSO,但对于像我这样的用例(OpenGL游戏),我发现覆盖比切换到其他应用更可取。

文件:|开始于:行#220
authorizeWithFBAppAuth:safariAuth:
|添加布尔
trySafariAuth=NO至第223行

在facebook.m中更改以下方法
-(无效)授权:(NSArray*)权限
委托人:(id)委托人{
[_权限释放];
_权限=[权限保留];
_sessionDelegate=委托;
[通过FBAppAuth自授权:无safariAuth:无];
//[通过FBAppAuth自我授权:否safariAuth:是];
}

那么你想用什么呢,Firefox?非常感谢你提出这个问题。。。我已经绞尽脑汁好几个星期了,我甚至实现了自己的UIWebView,它看起来比facebook的要丑陋100倍。为了简化这一改变,我只是强迫trySafariAuth在FBAppauth:safariAuth中拒绝。就像一个魅力,让用户留在应用程序中。对于更新版本的用户来说,要找到@donkim的代码是指搜索BOOL didOpenOtherApp=NO;有用的部分是下面的
if
block。也许我遗漏了什么,但是Facebook.m在哪里?如果我签入添加到我的项目中的
FacebookSDK.framework
,我会看到许多头文件前面都有
FB
,但没有Facebook.m。欢迎提供任何信息@sixstatesaway,我也找不到它。但我现在找到了。打开你的
facebook ios sdk.xcodeproj
。在FacebookSDK下,你会找到
Legacy
。在
Legacy
下,有facebook.m
  /**
   * 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...
    }
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];
    }