2

要件 :- ユーザー データを認証および取得するための Yii、OAuth 実装。拡張機能が 2 つあることがわかりました。Eauth (OAuth 2.0 およびその他のソーシャル ネットワーキング サイトをサポート) および Eoauth (OAuth 1.0)。私が間違っている場合は修正してください。

ソーシャル ネットワーキング サイトを認証する必要はありません。データを取得する必要がある場所とは別の URL です。

これで、「eoauth」拡張機能を使用して正常にログインおよび認証できましたが、ユーザーに関する情報も取得する必要があります。OAuthレイヤーの下にあるURLからデータを取得する機能や方法が見つかりません。Eauth または Eoauth はフェッチをサポートしていますか、それともカスタム コーディングする必要がありますか? この拡張機能がこれを行わない場合、認証してデータを取得できる他の方法は何ですか?

4

2 に答える 2

4

もちろん、Eauth はユーザーのデータのフェッチをサポートしています。Eauth の構造を見てみましょう。ディレクトリとクラスが/servicesあり/custom_servicesますEOAuthService。EOAuthService にはmakeSignedRequest()、サードパーティのサイトから保護されたリソースを返すメソッドが含まれています。

したがって、このメソッドは、拡張する serviceClass から呼び出すことができますEOAuthService。たとえばFacebookOAuthService/servicesディレクトリ内のクラス。このクラスには protected method が含まれておりfetchAttributes()、メソッドを呼び出しmakeSignedRequest($url)てサードパーティのサイト (この例では FB) から $info (JSON) を取得します。このオブジェクトのプロパティ - ユーザーのデータです。どう/custom_servicesですか?ディレクトリには、「BaseServiceClass」を調整するためのクラスが含まれています。

したがって、たとえばCustomFacebookOAuthService extends FacebookOAuthService extends EOAuthServiceです。

独自のクラスを作成する必要があります。これにより、サードパーティのサイトに対して署名されたリクエストが作成され、適切な応答が得られます (たとえば、JSON で)。次に、取得した情報を取得します - そしてほら!もちろん、ユーザーは、oauth を介してアプリケーションで細かい認証を行うために、サードパーティのサイトによって認証される必要があります。

于 2013-01-27T16:13:12.470 に答える
1

古いですが、最後のURLにCURLリクエストを使用するだけで、データを取得できます。これらのモジュールには、データをフェッチする機能がないと思います。これがお役に立てば幸いです。私は自分のコードの1つで使用しましたが、成功しました

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 に答える