私はNet::OAuthモジュールをYammer APIで承認しようとしています。次のコードスニペットを用意しています。Perl Net :: OAuthの問題
$Net::OAuth::PROTOCOL_VERSION = Net::OAuth::PROTOCOL_VERSION_1_0A;
my $q = new CGI;
my $request = Net::OAuth->request("request token")->from_hash($q->Vars,
request_url => $self->_request_token_url,
request_method => $q->request_method,
consumer_secret => $self->consumer_private,
);
しかし、私は試してみて、私のテストを実行する場合、以下のように、それはエラーがスローされます。
Expected a hash! at /Library/Perl/5.8.8/Net/OAuth/Message.pm line 241.
は、私は明白な構文エラーをしたか、私はOAuthのモジュール自体を見ているつもりですがありますか?
Net::OAuth::Messagesub from_hash {
my $proto = shift;
my $class = ref $proto || $proto;
my $hash = shift;
if (ref $hash ne 'HASH') {
die 'Expected a hash!';
}
my %api_params = @_;
で
私はこれも最初に考えましたが、正しくはありません。 cchenesonによってリンクされているソースを見てください。最初の引数だけがハッシュリファレンスになると予想され、残りは@から別のハッシュに引かれます。 –
さらに、それはハッシュコンストラクタの要素数が奇数です;) –
$ q-> Varsがリストコンテキストで平らになったハッシュを返すため、要素数が奇数ではありません。しかし、それが解決策の鍵でした。私の編集された答えを見てください。 –