我编写了一个 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;
    } 
};