2009-11-08 68 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圖書館,看看他是如何做到的。