2

目標: Zend Framework Web アプリケーション内で使用する Oauth プロバイダーを作成する。

ここまでのプロセス: Zend Framework OAuth クライアント (ZF 1.12) を Google Code OAuth クラスと統合しました [http://code.google.com/p/oauth/]。www サイトでクライアントとして使用する ZF クライアント、API サイトの認証ラッパーで使用する Google コード OAuth。

ソリューションを機能させるための支援を探しています。

URL に GET パラメータがあり、両方のフレームワークが異なる署名を生成して認証を破る場合を除き、このソリューションは基本的なリクエストに適しています。

サンプルコード www:

$uri = 'http://oauth.example.com/search?q=something';

$Application = array();
$Application['oauth_consumer_key'] = 'app';
$Application['oauth_consumer_secret'] = 'appsecret';

$token = new Zend_Oauth_Token_Access();

$config = array(
    'consumerKey' => $Application['oauth_consumer_key'],
    'consumerSecret' => $Application['oauth_consumer_secret'],
);

$client = $token->getHttpClient($config);
$client->setUri($uri);
$client->setMethod(Zend_Http_Client::POST);
$client->setHeaders('Content-Type', 'application/json');
$response = $client->request();

サンプル コード API:

require_once 'OAuth.php';

$userRequest = OAuthRequest::from_request(null, null, null);
$params = $userRequest->get_parameters();
$params['user_request'] = $userRequest;
$request = $params;

$application = array(
    'token' => 'app',
    'secret' => 'appsecret',
);

// Test OAuth tokens
$oauthConsumer = new OAuthConsumer($application['token'], $application['secret']);
$oauthToken = null;
$signatureMethod = new OAuthSignatureMethod_HMAC_SHA1();

$signature = $signatureMethod->build_signature(
    $request['user_request'],
    $oauthConsumer,
    $oauthToken
);

// If signatures match, return true
if ($request['oauth_signature'] == $signature) {
    return true;
}

return false;

Zend_Oauth_Token_Access は、oauth クラスがすべてのパラメータを考慮するカスタム パラメータ (上記の「?q=」を参照) を無視しているようです。これは、パラメータがない場合、両方のシステムが同じ署名を生成することを意味します。

Zend Oauth クライアントに GET パラメータを考慮させることができないようです。

助けてください?

4

1 に答える 1

0

ZF1 には、oauth プロバイダー (oauth 1.0a または 2) は含まれていません。https://github.com/smalyshev/Zend_OAuth_Providerなどの oauth 1.0a プロバイダーをいくつか見つけましたが、自分のアプリケーションに oauth 2.0 サポートを追加したかったのです。

最終的にhttps://github.com/quizlet/oauth2-phpを取りZend_Db_Table、ストレージ アダプターとしてのサポートを追加しました。このプロジェクト コードの一部はごちゃごちゃしていますが、これは私がこれまでに見つけた中で最高の php oauth2 プロバイダーです。

必要に応じて、私のコードを github リポジトリで共有できます。

于 2012-11-19T22:32:30.323 に答える