【问题标题】:Massive API/Framework mashup issue (oAuth, Facebook, Twitter, Code Igniter)大规模 API/框架混搭问题(oAuth、Facebook、Twitter、Code Igniter)
【发布时间】:2009-11-08 04:29:40
【问题描述】:

我正在处理的一个项目遇到(很多,但目前)一个问题。

  1. 这是一个在 Code Igniter 上运行的 PHP 项目
  2. 这是一个Facebook应用,想要使用oAuth Twitter授权

CodeIgniter 默认清除 $_GET 数组,因为它使用 URI 来控制 MVC 内容。您可以将其关闭以访问 GET 数组,并使用类似 example.com/?c=MyController&m=MyMethod 的字符串来解决此问题。

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

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

我以这种方式设置它,以便它可以使用 $_GET 数组。当 Twitter(我假设任何其他实现)使用 oAuth 时,它会返回到您想要的任何 URL,并在末尾附加 ?token=250937602736037609273609327,所以我最终在

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

看起来是对的,实际上等价于

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

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

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

感谢您的任何建议。

【问题讨论】:

    标签: php facebook codeigniter get uri


    【解决方案1】:

    嗯。你能用 mod_rewrite 和 QSA 标志做一些聪明的事情来自动将它们串在一起吗? IE。重写你的“root url”而不是在 facebook 中添加 & 符号?

    【讨论】:

    • Dav 是正确的,最简单的方法是在它被 codeigniter 的 url 解析器处理之前重写 url(实际上使用 mod_rewrite 你应该能够重写 url 和查询字符串)
    【解决方案2】:

    也许我没有完全理解你的问题,但你不能在 application/config/config.php 文件中将& 添加到$config['permitted_uri_chars'] 吗?

    【讨论】:

    • 嗯,问题是 GET 数组的正确格式看起来像“?field=value&field2=value2&field3=value3”。符号为“?&&&&...”,结果为“??&&&&&” 所以它知道与号是可以的,但问题是URL中有两个问号。
    【解决方案3】:

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

    查看 Twitter 库的 haughin.com,看看他是如何做到的。

    【讨论】:

      猜你喜欢
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      • 2011-11-14
      • 1970-01-01
      • 2011-07-16
      相关资源
      最近更新 更多