2009-02-27 9 views
6

Tôi đang thực hiện OpenID và tôi muốn lấy địa chỉ email của người dùng và các thông tin khác về người sử dụng, tôi đang làm điều này:Yêu cầu từ nhà cung cấp OpenID

var fetch = new FetchRequest(); 
fetch.AddAttribute(new AttributeRequest(WellKnownAttributes.Contact.Email)); 
request.AddExtension(fetch); 

Nhưng các nhà cung cấp không trả lại bất cứ thứ gì. Tôi đang sử dụng DotNetOpenID

Tôi đang làm gì sai?

cảm ơn!

EDIT:

Khi tôi thử đăng ký tại http://www.plaxo.com/ sử dụng myOpenID hoặc Google, cả hai đều nói Plaxo đang yêu cầu thêm thông tin, nhưng khi tôi kiểm tra trang web của tôi họ không nói bất cứ điều gì ...

Trả lời

6

Như Martin đã nói, điều đó tùy thuộc vào Nhà cung cấp.

MyOpenID không làm AttributeExchange, tôi nghĩ vậy. Họ làm sreg (đăng ký đơn giản) mặc dù, do đó, thêm một phần mở rộng ClaimsRequest yêu cầu của bạn và bạn sẽ nhận được một ClaimsResponse trở lại từ một số nhà cung cấp.

Google chỉ thực hiện AttributeExchange và chỉ cung cấp địa chỉ email. Điều duy nhất bạn thiếu trong mã của bạn là Google cũng không tự nguyện địa chỉ email trừ khi bạn đánh dấu nó là "Bắt buộc" trong yêu cầu của bạn. Thêm một tham số thứ hai ", true" vào hàm tạo AttributeRequest và sau đó Google sẽ sáng lên và cung cấp cho bạn địa chỉ email của người dùng.

Dưới đây là một số docs and samples of getting attributes.

+0

Andrew, bạn có thể chỉnh sửa trả lời này với một số mã mẫu C# sreg hoặc liên kết tới bài đăng trên blog/trang web hướng dẫn bằng một số mã hiển thị không? –

+0

Cảm ơn, tôi đã làm việc với Google bây giờ mà tôi đã thêm AX – gravitation

+0

Pure.Krome, tôi đã thêm liên kết theo yêu cầu. –

1

Có thể bạn không làm gì sai - nhà cung cấp có thể không hỗ trợ yêu cầu hoặc chọn không gửi thông tin được yêu cầu.

http://blog.nerdbank.net/2008/07/how-to-use-dotnetopenid-attribute.html "Giống như tất cả tiện ích mở rộng OpenID, chỉ gửi yêu cầu có phần mở rộng trong đó không đảm bảo rằng Nhà cung cấp sẽ gửi phản hồi cho tiện ích đó trở lại. Nhà cung cấp có thể không hỗ trợ tiện ích đó hoặc có thể chọn không gửi bất kỳ phản hồi nào. "