2012-04-06 6 views
2

を使用してLTIの成果サービスのためのOAuth XML要求に署名した私は体を構築するために、PECLのOAuthのライブラリを、それが可能にされて使用しているように見えるOAuthリクエスト署名:私ははPECLのOAuthの

POST http://www.imsglobal.org/developers/BLTI/service_handle.php HTTP/1.0 
Host: 127.0.0.1:80 
Content-Length: 757 
Authorization: OAuth realm="",oauth_version="1.0", 
oauth_nonce="29f90c047a44b2ece73d00a09364d49b", 
oauth_timestamp="1313350943",oauth_consumer_key="lmsng.school.edu", 
oauth_body_hash="v%2BxFnmDSHV%2Fj29qhxLwkFILrtPo%3D", 
oauth_signature_method="HMAC-SHA1", 
oauth_signature="8auRpRdPY2KRXUrOyz3HKCs92y8%3D" 
Content-type: application/xml 
<?xml version = "1.0" encoding = "UTF-8"?> 
... more xml data ... 

をIMS Global LTI標準インターフェースを使用してInstructureのCanvas LMSと通信しようとしました。 Outcomes Serviceは、LMSにスコアを送り返すことができますoauth signed xml messages

答えて

3

現在、oAuthはoaut_body_hashを現在サポートしていません。

私は、このGoogleのコードリポジトリhttp://code.google.com/p/oauth/からのOAuthライブラリを使用して終了し、身体を計算すると、自分自身を持っています

$bodyHash = base64_encode(sha1($body, TRUE)); // build oauth_body_hash 
$consumer = new \OAuthConsumer($key, $secret); 
$request = \OAuthRequest::from_consumer_and_token($consumer, '', 'POST', $endpoint, array('oauth_body_hash' => $bodyHash)); 
$request->sign_request(new \OAuthSignatureMethod_HMAC_SHA1(), $consumer, ''); 
$header = $request->to_header() . "\r\nContent-Type: application/xml\r\n"; // add content type header