有没有办法在UIWebView中结合使用FB单点登录和“喜欢”按钮的登录流程?
我有一个应用程序,它使用UIWebView显示网页,在该页面中有一个FB“喜欢”按钮。我已经按照帖子中提出的建议使该按钮正常工作。
但是登录对话框看起来不太好,如果我可以使用SSO流程那就太棒了。但是我还没有成功实现这一点。是否有人尝试过这个?
有没有办法在UIWebView中结合使用FB单点登录和“喜欢”按钮的登录流程?
我有一个应用程序,它使用UIWebView显示网页,在该页面中有一个FB“喜欢”按钮。我已经按照帖子中提出的建议使该按钮正常工作。
但是登录对话框看起来不太好,如果我可以使用SSO流程那就太棒了。但是我还没有成功实现这一点。是否有人尝试过这个?
我实际上修改了Facebook的源代码,始终使用Safari进行身份验证,而不是单点登录。这使我能够在UIWebViews中创建我的“喜欢”按钮(或“喜欢框”)。
Facebook API 实际上首先检查您的 ios 设备是否支持多任务处理。 如果不支持,则使用弹出式对话框。 如果设备支持,则尝试使用 Facebook 应用程序(如果当然已安装在设备上),然后是 Safari,最后才回退到弹出式对话框。 注意使用相同的 Facebook 对象,否则每个操作都需要登录...
不可能使用Web组件(如UIWebView或外部Safari)和本地代码(如您所提到的UIButton)以SSO方式相互通信。
1)FB存储登录cookie以进行授权。
2)每个Web组件(例如UIWebView或外部Safari)都使用其自己的沙盒式cookie存储。我发现(并且我强烈相信)它们之间没有实现相互通信的方法。
3)本地代码使用AccessToken,该令牌存储在每个应用程序的沙盒中,以便在外部FB API调用(如授权、图形调用等)中使用。
4)如果您找到其他方法,请告诉我;)
看起来大家都认为这是不可能的。然而,这篇文章向你展示了如何实现: 在iOS上使用Facebook Graph API中的“Like”
为了证明它的可行性,以下是FB Graph API文档的摘录:
您可以通过发布到https://graph.facebook.com/OBJECT_ID/comments和https://graph.facebook.com/OBJECT_ID/likes,对任何具有/comments或/likes连接的对象进行评论或点赞:
您可以拦截您的“喜欢”按钮的操作。
只需将您的“喜欢”按钮设置为链接到http://mydomain.com/doLikeStuff
在UIWebView中,检查 webView:shouldStartLoadWithRequest:navigationType:
是否有/doLikeStuff链接,返回NO(这样Web视图实际上不会执行任何操作),并实现您的自定义流程。