Tôi đã viết một ứng dụng web Dancer sử dụng Net::OpenID::Consumer
để sử dụng OpenID để xác thực. Nó hoạt động tốt với Google và MyOpenID, nhưng không hoạt động với Yahoo. Khi người dùng cố gắng xác thực bằng tài khoản Yahoo của họ, HTML::Parser
cảnh báo:Làm cách nào để tránh lỗi mã hóa khi sử dụng Net :: OpenID :: Consumer with Yahoo OpenID?
Parsing of undecoded UTF-8 will give garbage when decoding entities
và cảnh báo này giết ứng dụng của tôi (đúng là như vậy).
Tôi không thấy bất kỳ lỗi hiện có nào với Net::OpenID::Consumer
(hoặc Chung) liên quan đến điều này.
Các tiêu đề HTTP và thẻ meta HTML đều chỉ định UTF-8 cho URI 'xác nhận quyền sở hữu'.
Tại sao phản hồi không được giải mã cho HTML::Parser
? Tôi có thiếu một cái gì đó hiển nhiên?
Dưới đây là các mã có liên quan:
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;
}
};
[Hiển thị mã của bạn] (http://sscce.org) để mọi người có thể [tạo lại vấn đề] (http: // www.chiark.greenend.org.uk/~sgtatham/bugs.html#showmehow). – daxim
Có vẻ như bạn không giải mã HTML trước khi chuyển nó sang Parser, vì vậy hãy giải mã nó. Nếu đây là LWP, tôi muốn sử dụng '-> decoded_content' thay vì' -> content'. –
user1215106, Net :: OpenId :: Common là lấy và phân tích cú pháp HTML, không phải mã của tôi. – kbosak