Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone SDK/Facebook Connect:使用自定义登录对话框_Iphone_Login_Facebook_Fbconnect - Fatal编程技术网

iPhone SDK/Facebook Connect:使用自定义登录对话框

iPhone SDK/Facebook Connect:使用自定义登录对话框,iphone,login,facebook,fbconnect,Iphone,Login,Facebook,Fbconnect,正是标题所说的。有没有可能在原生iPhone应用程序中使用Facebook Connect(或任何其他FB集成方式),而不借助内置的登录对话框(看起来很糟糕)?在这里,我可以创建自己的自定义登录屏幕,询问facebook登录用户名和密码,然后使用fbconnect本机方法验证该信息并检索有效会话?当我查看facebook Connect时,他们似乎对API和您可能想要的任何MOD都非常严格。facebook.com/x上一次也没有提到定制界面,所以我认为你必须坚持他们批准的内容 如果登录对话框实

正是标题所说的。有没有可能在原生iPhone应用程序中使用Facebook Connect(或任何其他FB集成方式),而不借助内置的登录对话框(看起来很糟糕)?在这里,我可以创建自己的自定义登录屏幕,询问facebook登录用户名和密码,然后使用fbconnect本机方法验证该信息并检索有效会话?

当我查看facebook Connect时,他们似乎对API和您可能想要的任何MOD都非常严格。facebook.com/x上一次也没有提到定制界面,所以我认为你必须坚持他们批准的内容

如果登录对话框实际上至少执行了基本表单验证,那就太好了。您可以提交表格,无需填写电子邮件地址或密码。劣质,劣质,用户界面工作。

是和否

Facebook使用委托授权让您的应用程序与其连接。因此,用户打算将他们的密码输入到“可信”的东西(例如Facebook登录页面)中,这样你的应用程序就不会真正看到它,而只会因此获得密钥。这样一来,用户就被训练成不信任其他网页/应用程序的密码

因此,FB在其FBConnect库中提供此web弹出窗口,没有其他明确的方式将用户的凭据转换为会话

话虽如此,我将回答你的技术问题,因为这是一个合法的问题;您可以通过创建一个屏幕外UIWebView,托管该web视图中的任何FB登录URL,并使用
stringByEvaluatingJavaScriptFromString:
将Javascript注入页面来实现您想要的功能。Javascript可以获取用户名/密码,填写表单,然后提交,而用户根本看不到它。阅读FBConnect库代码以了解要使用的URL,以及如何处理提交页面的结果——您可以将其连接回库中

这样做是(1)脆弱的,因为你将不得不依赖ID和可以/将要改变的东西来击败这些技术;(2)可能违反FB Connect的使用条款,当然(3)总体上对web上的身份验证的健康没有好处,因为这并不能强化用户不应该信任第三方的密码


毫无疑问,如果你一个人去做,给用户一个更好看的身份验证体验,那么除了把用户的身份证书给Facebook之外,永远不要用他们的身份证书存储或做任何事情。

不要这样做。这违反了策略,您的应用程序将因此而关闭。正如吉诃多所建议的那样,这是因为我们不想训练用户在随机位置键入密码,而且用户还没有按照我们的用户体验要求确认操作。我们目前正在重新设计这些对话框,以使它们更漂亮。

当你说loginDialog很糟糕时,你的意思是因为用户必须滚动才能找到文本字段,所以屏幕都乱了吗???如果是这样的话,有一个解决办法可以让loginDialog屏幕看起来很漂亮,即不需要滚动就能适应所有屏幕。@Raja你有关于这个解决办法的链接吗?@Raja:我的意思是很糟糕,因为它看起来完全像它是什么,嵌入在半成品灯箱上的UIWebView打破了你可能想在自己的应用程序中使用的所有自定义界面。facebook不是你的,是他们的,所以如果你要住在他们家里,使用他们的代码,你需要遵守他们的规则。如果您不喜欢,可以使用本机框架在http上滚动您自己的apiclasses@slf当前位置我知道这一点。这就是为什么我要问,是否有人知道一种利用FB公开的服务的现有api的替代方法,到目前为止,答案似乎是“不”…@quixoto:我自己也想过做类似的事情,但正如你所说,不幸的是,我不相信你会找到比这更稳定的解决方案;Facebook的委托授权是他们让你通过身份验证的方式——你可以在一个隐藏的视图中结束网络交互,或者使用一个NSURLConnection套接字和一系列智能启发式方法手动完成,以找到正确的字段,等等,但不管怎样,在某种程度上,你会变得脆弱,因为他们不能保证任何关于内部的东西,除了认证URL将保持不变。谢谢daaku。这是一个非常古老的问题(在开发时),但既然你似乎是FBConnect的官方开发者(或者在这方面有某种权威),我很乐意接受你的答案。呵呵,是的,我最近才开始研究堆栈溢出:)虽然自定义登录表单可以很好,但我希望Twitter也有类似的东西。