要求: - Yii,OAuth实现以验证和获取用户数据。 我发现有两个扩展。 Eauth(支持OAuth 2.0和其他社交网站)和Eoauth(OAuth 1.0)。纠正我如果我错了。
我不必对任何社交网站进行身份验证。它是我需要获取数据的不同网址。
现在我可以使用" eoauth"成功登录和验证。扩展,但我还需要获取有关用户的信息。我找不到任何功能或方法如何从位于OAuth层下的网址获取数据。 Eauth或Eoauth是否支持提取或必须自定义编码? 如果这个扩展没有这样做,那么我可以通过哪种方式验证和获取数据?
答案 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);
}