Yii OAuth实施

时间:2012-09-28 08:55:29

标签: php oauth yii yii-extensions

要求: - Yii,OAuth实现以验证和获取用户数据。 我发现有两个扩展。 Eauth(支持OAuth 2.0和其他社交网站)和Eoauth(OAuth 1.0)。纠正我如果我错了。

我不必对任何社交网站进行身份验证。它是我需要获取数据的不同网址。

现在我可以使用" eoauth"成功登录和验证。扩展,但我还需要获取有关用户的信息。我找不到任何功能或方法如何从位于OAuth层下的网址获取数据。 Eauth或Eoauth是否支持提取或必须自定义编码? 如果这个扩展没有这样做,那么我可以通过哪种方式验证和获取数据?

2 个答案:

答案 0 :(得分:4)

当然,Eauth支持获取用户的数据。 让我们看看Eauth结构。我们有目录/services/custom_services和类EOAuthService。 EOAuthService包含方法makeSignedRequest(),它从第三方站点返回受保护资源。

所以,我们可以从我们的serviceClass调用这个方法,扩展EOAuthService。例如,FacebookOAuthService目录中的类/services。该类包含受保护的方法fetchAttributes(),它调用方法makeSignedRequest($url)并从第三方站点获取$ info(以JSON格式)(在我们的示例中为FB)。该对象的属性 - 它是我们用户的数据。 那么/custom_services呢?该目录包含用于调整“BaseServiceClass”的类。

因此,例如,CustomFacebookOAuthService 扩展 FacebookOAuthService 扩展 EOAuthService

您需要创建自己的类,这将为您的第三方网站提供签名请求并获得正确的响应(例如,以JSON格式)。然后获取获取信息 - 瞧! 当然,用户必须通过第三方网站进行身份验证,才能通过oauth在您的应用程序上进行优质身份验证。

答案 1 :(得分: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);               
    }