2

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

我不必验证任何社交网站。这是一个与我需要获取数据的网址不同的网址。

现在我可以使用“eoauth”扩展成功登录并进行身份验证,但我还需要获取有关用户的信息。我没有找到任何功能或方法如何从位于 OAuth 层下的 url 获取数据。Eauth 或 Eoauth 是否支持获取或必须自定义编码?如果此扩展不这样做,那么我可以验证和获取数据的另一种方式是什么?

4

2 回答 2

4

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

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

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

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

于 2013-01-27T16:13:12.470 回答
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);               
    }
于 2013-02-26T07:05:00.353 回答