2012-09-28 54 views
2

需求:Yii,OAuth實現驗證和獲取用戶數據。 我發現有兩個擴展。 Eauth(支持OAuth 2.0和其他社交網站)和Eoauth(OAuth 1.0)。糾正我如果我錯了。Yii OAuth實施

我沒有認證任何社交網站。這與我需要獲取數據的地址不同。

現在我可以使用「eoauth」擴展程序成功登錄和驗證,但我也需要獲取有關用戶的信息。我沒有找到任何功能或方式如何從位於OAuth層下的url獲取數據。 Eauth或Eoauth是否支持提取或必須自定義編碼? 如果這個擴展沒有這樣做,那麼我可以通過其他方式進行身份驗證和獲取數據?

回答

1

雖然老,但你只需要使用CURL請求到最終的URL,你會得到你的數據。我猜這些模塊沒有獲取數據的功能。我希望這可以幫助你。我已經在我的一個代碼中使用,並且它成功了

public function GetData($url){ 
     $signatureMethod = new OAuthSignatureMethod_HMAC_SHA1(); 
     $request = OAuthRequest::from_consumer_and_token($this->consumer,$this->token, 'GET', $url, array()); 
     $request->sign_request($signatureMethod, $this->consumer, $this->token);   
     $fetchUrl = $request->to_url(); 
     $response = Yii::app()->CURL->run($fetchUrl);  
     return json_decode($response);    
    } 
4

當然,Eauth支持獲取用戶的數據。 讓我們來看看Eauth的結構。我們有目錄/services,/custom_servicesEOAuthService。 EOAuthService包含方法makeSignedRequest(),它從第三方站點返回受保護的資源。

所以,我們可以從我們的serviceClass調用這個方法,該方法擴展了EOAuthService。例如,/services目錄中的FacebookOAuthService類。該類包含受保護的方法fetchAttributes(),它調用方法makeSignedRequest($url)並從第三方站點(本例中爲FB)獲取$ info(以JSON形式)。這個對象的屬性 - 這是我們用戶的數據。 /custom_services怎麼樣?該目錄包含用於調整我們的「BaseServiceClass」的類。

因此,例如,CustomFacebookOAuthService延伸FacebookOAuthService延伸EOAuthService

您需要創建自己的類,它將爲您的第三方站點發出簽名請求並獲得正確響應(例如,使用JSON)。然後獲取獲取的信息 - 瞧! 當然,用戶必須通過第三方網站進行認證,才能通過oauth對您的應用程序進行認證。