Php 大量API/框架mashup问题(oAuth、Facebook、Twitter、CodeIgniter)
我正在做的一个项目有一个问题(很多,但目前为止)Php 大量API/框架mashup问题(oAuth、Facebook、Twitter、CodeIgniter),php,facebook,codeigniter,get,uri,Php,Facebook,Codeigniter,Get,Uri,我正在做的一个项目有一个问题(很多,但目前为止) 这是一个在CodeIgniter上运行的PHP项目 这是一个想要使用oAuth Twitter授权的Facebook应用程序 CodeIgniter默认情况下会清除$\u GET数组,因为它使用URI来控制MVC内容。您可以关闭此选项以访问GET数组,并使用类似example.com/?c=MyController&m=MyMethod的字符串来绕过此问题 Facebook要求您为应用程序页面定义根url。这意味着对我来说: apps.faceb
example.com/?c=MyController&m=MyMethod
的字符串来绕过此问题
Facebook要求您为应用程序页面定义根url。这意味着对我来说:
apps.facebook.com/MyApplication == http://www.myownserver.com/index.php/c=SignIn&
我用这种方式设置它,以便它可以使用$\u GET数组。当Twitter(我假设任何其他实现)使用oAuth时,它会返回到您想要的任何URL,并在末尾附加?token=250937602736037609273609327
,因此我最终在
app.facebook.com/MyApplication/?token=302870637602746094276097
这看起来不错,但实际上相当于
http://www.myownserver.com/index.php/c=SignIn&?token=302870637602746094276097
所以问题是URL中不能有两个问号;第二个需要是一个符号(&),以将更多的值串在一起。错误消息是可预测的不允许的关键字符。
有人能想出一个好的/聪明的方法来解决我的这个问题吗?我真的不想放弃这个设置中的CodeIgniter部分,因为它有一个很好的DB抽象和很好的助手,我已经在上面写了很多代码
谢谢你的建议。Hm.你能用mod_rewrite和QSA标志做些聪明的事情来自动把它串起来吗?也就是说,重新编写你的“根url”,而不是在facebook上加上符号?也许我不完全理解你的问题,但你不能将
&
添加到$config['allowed\u uri\u chars']
在application/config/config.php文件中?您可以扩展输入库以允许查询字符串和漂亮的URL
查看Twitter库,看看他是如何做到的。问题是GET数组的正确形式看起来像“?field=value&field2=value2&field3=value3”。符号变为“?&&&&&…”,这将导致“?&&&&&&&&”,因此它知道符号是可以的,但问题是URL中有两个问号。Dav是正确的,最简单的方法是在codeigniter的URL解析器处理URL之前重写URL(事实上,使用mod_rewrite,您应该能够同时重写url和查询字符串)