2012-06-06 82 views
11

https://github.com/alexbilbie/CodeIgniter-OAuth-2.0-Server使用CodeIgniter集成的OAuth 2.0

我發現這個在GitHub但是步驟來實現並不真正具有安裝OAuth的代碼放到CodeIgniter的幫助,並沒有發現對如何做到這一點任何真正的好文章

有沒有人已經這樣做可以幫我設置這個了?

+0

我想從上面的URL下載OAuth-2.0服務器,但我沒有找到404,你能幫我把它安裝在我的CodeIgniter應用程序中嗎? –

回答

32

HéHoang,

oAuth庫並不真正自我解釋。這是我如何得到它的工作:

基礎

  1. 閱讀oAuth 2.0 draft 23剛夠取得OAuth,角色和流程的基本思想。
  2. 然後按照安裝在您的CodeIgniter alexbilbie控制器和庫的說明安裝
  3. 安裝表,並添加應用程序和一些角色(思過一個Facebook應用程序,你可以申請權限的角色)
  4. 請確保您在oAuth_server.php文件使你validate_user功能,在底部某處

一個請求

現在要執行的AUT horization請求作爲客戶端。這些簡單的步驟記錄在this section中。

編輯:Philsturgeon的oAuth 2.0授權庫可用於自動執行此操作。這裏描述的是手動方式。

對於庫,這意味着要:

/index.php/oauth?client_id=IN_YOUR_APPLICATION & REDIRECT_URI = IN_YOUR_APPLICATION & RESPONSE_TYPE =代碼&範圍= YOUR_ROLE

在具有數據的填充variabels你已經加入了數據庫。

調試一些錯誤的,可能會給..

如果一切順利的話,你DIT如下:?

登錄 - >授權應用程序 - >看你REDIRECT_URI頁面代碼= XXXXXXX

你會想要那個XXXXXXX代碼

然後在redirect_uri上發帖到/ index。PHP/OAuth的/的access_token

有了這些variabels(你知道他們現在都)

  • CLIENT_ID(在申請表)
  • client_secret(在申請表)
  • REDIRECT_URI(在申請表:其中你想去保存access_token)
  • code(the XXXXXX)
  • grant_type(必須是'authorization_code')你在閱讀該部分後就知道這一點!

該帖子返回包含access_token(或錯誤)的JSON字符串。 YEAH!

接下來會發生什麼

保存在的access_token你的實際應用,並請求使用它。在您的資源服務器上(可能是一個API和與我剛剛解釋的授權服務器相同的CodeIgniter項目),您需要在返回結果之前驗證access_token。

這是這樣的:

$this->load->library('oauth_resource_server'); 
if (!$this->oauth_resource_server->has_scope(array('account.basic'))) 
{ 
    // Error logic here - "access token does not have correct permission" 
    show_error('An access token is required to request this resource.'); 
} 
else 
{ 
    //GO RETURN RESULTS 
} 

希望這可以讓你啓動和運行! PS:你需要建立一些管理區域來管理應用程序,會話和角色,儘管如此。

Eric

+0

非常感謝。你需要更多的讚揚! :) –

+0

非常感謝Eric,我不理解的一件事是請求uri。我已閱讀草稿中的部分,它解釋了請求uri需要來自客戶端的絕對URL,但是如果我正在製作android/iphone應用程序,那麼這個值必須是什麼,因爲我的應用程序不是Web上的網站服務器?您的幫助將不勝感激 – skashi

+0

在哪裏可以找到任何與CodeIgniter集成的OAouth2服務器,因爲提到的URL不可用,您能幫我找到一個工作示例嗎? –

3

我使用了另一個非常適合codeigniter使用的火花庫。 這裏是關於如何使用spark安裝並使用它的很好的教程。 Oauth tutorial for codeigniter

+0

使用Oauth/2火花的好主意,但你將需要一個體面的把握PHP的教程。它有幾個錯別字,也是他們沒有提供的引用函數。 – EpicVoyage