我编写了一个 Dancer 网络应用程序,Net::OpenID::Consumer
用于使用 OpenID 进行身份验证。它适用于 Google 和 MyOpenID,但不适用于 Yahoo。当用户尝试使用他们的 Yahoo 帐户进行身份验证时,会HTML::Parser
发出警告:
Parsing of undecoded UTF-8 will give garbage when decoding entities
这个警告会杀死我的应用程序(理所当然)。
我没有看到任何与Net::OpenID::Consumer
此相关的现有错误(或常见错误)。
HTTP 标头和 HTML 元标记都为 'claimed id' URI 指定 UTF-8。
为什么不解码响应HTML::Parser
?我错过了一些明显的东西吗?
以下是相关代码:
get '/openid_landing' => sub {
my $params = params();
my $csr = Net::OpenID::Consumer->new(
ua => LWP::UserAgent->new(),
consumer_secret => $secret,
params => $params,
);
my $id = $params->{'openid.claimed_id'};
if (my $setup_url = $csr->user_setup_url) {
redirect $setup_url;
} elsif ($csr->user_cancel) {
redirect uri_for('/');
} elsif (my $vident = $csr->verified_identity) {
# verified identity, log in or register user
...
} else {
die "Error validating identity: " . $csr->err;
}
};