簡體   English   中英

如何使用 PHP 讀取 OAuth 請求參數?

[英]How to read the OAuth request parameters with PHP?

我正在嘗試使用 2 腿 OAuth 作為身份驗證機制將 iPhone 應用程序連接到 PHP API。 我正在使用來自http://code.google.com/p/oauth/的 PHP 和 Objective-C 2.0 庫。 The problem is that when I'm trying to issue a GET request with Objective-C, it doesn't include the OAuth parameters in the request URI, like the PHP library does when issuing an OAuth GET request:

http://www.mysite.com/oauth/index.php?oauth_consumer_key=key&oauth_nonce=XXXXXXXX&oauth_signature=XXXXXXXXXXX%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1309863754&oauth_version=1.0

相反,它將 OAuth 參數放在授權 header 中:

Authorization: OAuth realm="", oauth_consumer_key="XXXXX", oauth_token="XXXX-XXXX",
oauth_signature_method="HMAC-SHA1", oauth_signature="XXXXXXXX", 
oauth_timestamp="1309863855", oauth_nonce="XXXX-XXX-XX-XX-XXXXXXX", oauth_version="1.0"

我想這兩種方式對於 OAuth 規格同樣有效,對吧?

我可以用 PHP 閱讀授權 header 的最佳方式是什么?

我想這兩種方式對於 OAuth 規格同樣有效,對吧?

是的,沒錯。

我可以用 PHP 閱讀授權 header 的最佳方式是什么?

PHP 中的請求標頭存儲在$_SERVER超全局數組中,每個 header 作為它自己的條目: $_SERVER['HTTP_AUTHORIZATION']最有可能在您的情況下,只是做

var_dump($_SERVER);

並查找信息。 PHP 如何處理 HTTP 請求的詳細信息

PHP 中缺少授權 header

不幸的是, Authorization header 被 PHP(?)過濾,所以它不是$_SERVER的一部分。

解決方法:apache_request_headers()

當使用 PHP 作為 Apache 模塊時,解決方法是使用apache_request_headers() function 來檢索所有請求標頭。

解決方法:mod_rewrite

對於 F/CGI,一種解決方法是使用 Mod_Rewrite 將 Authorization header 設置為模仿 PHP 轉換 HTTP 請求標頭的方案的環境變量:

RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)$ [NC]
RewriteRule .* - [E=HTTP_AUTHORIZATION:%1]

mod_rewrite 解決方案也適用於與 mod_php 一起運行的 PHP。 帽子提示喬恩·尼蘭德。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM