2009-11-08 51 views
0

我有(很多,但现在),我正在处理一个项目的一个问题。大量的API /框架混搭问题(oAuth,Facebook,Twitter,代码点火器)

  1. 这是代码点火器PHP项目运行
  2. 它是要使用OAuth Twitter的授权

笨默认清除$ _GET数组,因为它使用的URI的Facebook应用程序控制MVC的东西。您可以关闭此功能以访问GET数组,并使用像example.com/?c=MyController&m=MyMethod这样的字符串来解决此问题。

Facebook要求您为您的应用程序页面定义一个根网址。这意味着,对我来说:

apps.facebook.com/MyApplication == http://www.myownserver.com/index.php/c=SignIn& 

我把它设置了这种方式,以便它可以使用$ _GET数组。当Twitter的(和我承担任何其他的实现)使用OAuth,它传回给你想要追加到年底?token=250937602736037609273609327任何URL,所以我在

app.facebook.com/MyApplication/?token=302870637602746094276097 

看起来正确的结束,但实际上是等价到

http://www.myownserver.com/index.php/c=SignIn&?token=302870637602746094276097 

所以问题是,你不能在URL中有两个问号;第二个需要是&符号(&)以将更多的值串在一起。错误信息是一个可预测的Disallowed Key Characters.

任何人都可以通过一种很好/聪明的方式来解决我遇到的这个问题吗?我真的不希望转储此设置的CodeIgniter部分,因为它有一个很好的数据库抽象和好帮手,我已经写了很多代码。

感谢您的任何建议。

回答

1

嗯。你可以用mod_rewrite和QSA标志巧妙地将它们串在一起吗?即重写你的'根网址'而不是在Facebook上添加&符号?

+0

Dav是正确的,最简单的方法是重写url之前,它由codeigniter的url解析器处理(实际上mod_rewrite你应该能够重写url和查询字符串) – Sergi 2009-11-23 20:31:57

0

也许我不完全了解您的问题,但是您不能在application/config/config.php文件中将&添加到$config['permitted_uri_chars']

+0

那么,问题GET数组的适当形成看起来像“?field = value&field2 = value2&field3 = value3”。符号会变成“?&&&& ...”,这会导致“?? &&&&&”。因此,它知道&符号正常,但问题是URL中有两个问号。 – 2009-11-10 05:32:58

-1

您可以扩展输入库以允许查询字符串和漂亮的URL。

查看haughin.com的Twitter图书馆,看看他是如何做到的。