рдореБрдЭреЗ OpenID рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ
рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рдЖрдк рдЕрдкрдиреА рдкрд╕рдВрджреАрджрд╛ рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдЕрдиреНрдп рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╡рд╣рд╛рдВ рд▓реЗрдЦ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЖрдк рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ "рдЕрдЪреНрдЫрд╛ рд╣реБрдЖ!" рдФрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ! "рдкрд╣рд▓рд╛ рдирд╛рдо", "рдЕрдВрддрд┐рдо рдирд╛рдо", "рд▓реЙрдЧрд┐рди", "рдИрдореЗрд▓", "рдИрдореЗрд▓ рдлрд┐рд░ рд╕реЗ", "рдкрд╛рд╕рд╡рд░реНрдб", "рдкрд╛рд╕рд╡рд░реНрдб рдлрд┐рд░ рд╕реЗ", "рдореИрдВ рдирд┐рдпрдореЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣рд╛рдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ" рдФрд░ "рдХреИрдкреНрдЪрд╛"ред рдФрд░ "рд░рдЬрд┐рд╕реНрдЯрд░" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ bam - "рд▓реЙрдЧрд┐рди" - рд╡реНрдпрд╕реНрдд рд╣реИ, рдФрд░ рдлрд╝реАрд▓реНрдб "рдкрд╛рд╕рд╡рд░реНрдб", "рдлрд┐рд░ рд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб", "рдХреИрдкреНрдЪрд╛" рдорд┐рдЯ рдЬрд╛рддреЗ рд╣реИрдВред рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗред рдЕрдкрдирд╛ рджреВрд╕рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ (рдЬреЛ рджреВрд╕рд░рд╛ рд╣реИ, рдФрд░ рдореБрдЦреНрдп рдПрдХ рдирд╣реАрдВ, рдФрд░ рдкрд╕рдВрджреАрджрд╛ рдирд╣реАрдВ рд╣реИ) рдФрд░ рдлрд┐рд░ рд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб, рдлрд┐рд░ рд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб (рдкреЛрд╕реНрдЯ) рдФрд░ рдХреИрдкреНрдЪрд╛, рдФрд░ рдмреАрдПрдПрдо - рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рдмрд╕ "рдирд┐рдпрдореЛрдВ рдХреЛ рдкрдврд╝реЗрдВ ... рдЪреЗрдХрдмреЙрдХреНрд╕ рджреЛрдмрд╛рд░рд╛ рдЪреЗрдХ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ред рдЦреИрд░, рдирд░рдХ рдХреА рдордВрдбрд▓рд┐рдпрд╛рдВ рдлрд┐рд░ рд╕реЗ рдЧреБрдЬрд╝рд░реАрдВ, рдПрдХ рдкрддреНрд░ рд╕рд╛рдмреБрди рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓рд╛, рдЦрд╛рддреЗ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЬрд╣рд╛рдВ рд▓реЗрдЦ рдерд╛, рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рд╡реЗ рдЕрдЪреНрдЫреЗ рдлреЙрд▓реЛрд╡рд░реНрд╕ рдирд╣реАрдВ рд╣реИрдВ, рдареАрдХ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдЗрд╕ рдХреЗ рд╕рд╛рде рдирд░рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛, рд╡реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ред
рдПрдХ рдкреНрд░рдпреЛрдЧ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди, рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдореЗрд▓ рдореЗрдВ "рд╕рдХреНрд░рд┐рдп" рд╢рдмреНрдж рдкрд░ рдПрдХ рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВ - рдХрд┐ рдЖрдк рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдХрд┐рддрдирд╛ рдкрдВрдЬреАрдХреГрдд рд╣реИред
рдФрд░ рджреВрд╕рд░реА рддрд░рдл, рдЖрдк рд╕реЛрдЪрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЪрд▓реЛ рд╕рд░рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рд╕рд░рд▓ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реИрдВ: "рдирд╛рдо", "рдИрдореЗрд▓", "рд╕рдВрджреЗрд╢" - рдФрд░ рдЖрдк "рдИрдореЗрд▓" рджрд░реНрдЬ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред 3 рдорд╣реАрдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рдЖрддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╣рд╛рдБ - рд╕реНрдкреИрдо! рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рд╛рдл рдХрд┐рдпрд╛ - рдФрд░ рдпрд╣ рд╢реВрдиреНрдп рдкреНрд░рднрд╛рд╡ рд╣реИ, рд╕реНрдкреИрдо рдЬрд╛рд░реА рд╣реИ, рдХреИрдкреНрдЪрд╛ рдЬреЛрдбрд╝рд╛ - рдареАрдХ рд╣реИ, рдпрд╣ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдХрд┐рд╕реА рддрд░рд╣ рд╡реЗ рдЗрд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдзреНрдпрд╛рди (!) - рдкрдВрдЬреАрдХрд░рдг рджрд░реНрдЬ рдХрд░реЗрдВ ... рдУрд╣!
рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдБ (рд╣реБрд░реНрд░реЗ!) - OpenID рд╣реИред
рдореИрдВ рд╕рдордЭрдиреЗ рд▓рдЧрд╛ред рдпрд╣рд╛рдБ рдХреИрд╕реЗ OpenID рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдкрд░ рдПрдХ рд▓реЗрдЦ рд╣реИ ред рдЗрд╕рдореЗрдВ рдПрдХ рдЦрд╛рдорд┐рдпрд╛рдЬрд╛ рдпрд╣ рдерд╛ рдХрд┐ рдУрдкрдирдЖрдИрдбреА рдкреНрд░рджрд╛рддрд╛ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ ClaimedIdentifier рднреЗрдЬрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ andriy-chernikov.myopenid.com рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдареАрдХ рд╣реИ, рдЖрдк рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдХрд╛рдЯ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ andriy-chernikov рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рдХрд╛рдлреА рдкрдардиреАрдп рд╣реИред рд╣рдо рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рд╣рдо рддрд░реНрдХ рджреЗрддреЗ рд╣реИрдВ - рд╕рд╛рдорд╛рдиреНрдп рд▓реЛрдЧ gmail рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ google рдХреЗ рдкрд╛рд╕ OpenID рднреА рд╣реИ, рдХреЗрд╡рд▓ рдореЗрд░реЗ ClaimedIdentifier (FriendlyIdentifierForDisplay рдореЗрдВ рдХреЛрдИ рд░реЛрд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреЛрдИ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ) рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ: www.google.com/accounts/o8/id?id=AItOawl7JUIQLXJfxfxzx ред
"рд╣рд╛рдп, AItOawl7JUIQLXJf1Z_x1MoYu21XbfBuzvoriso, рд╣рдо рдЖрдкрдХреЛ рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рдкрд░ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд╢ рд╣реИрдВ"
- рдХрд┐рд╕реА рддрд░рд╣ рдХреБрдЫ рдЖрд╡рд╛рдЬ рдирд╣реАрдВ рдХрд░рддрд╛ред рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ OpenId рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЕрдиреНрдп рдбреЗрдЯрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдИрдореЗрд▓ рдХрд╛ рднреА рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! рдареАрдХ рд╣реИ, рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН рдпрджрд┐ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рд╕рдВрджреЗрд╢ рдЫреЛрдбрд╝рддрд╛ рд╣реИ "рдареАрдХ рд╣реИ! рдХреЗрд╡рд▓ рдпрд╣рд╛рдБ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдФрд░ рдпрд╣ IE рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╣реИ, рдФрд░ рдпрд╣рд╛рдБ рдЖрдкрдиреЗ рдПрдХ рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рджреЗрдЦрдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдБ рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ "рдореИрдВ рдЙрд╕реЗ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдБ" рдпрд╛рд░, рдмрд╣реБрдд рдЖрднрд╛рд░реА рд╣реВрдБред " рд╕рд╛рдЗрдЯ (рдЙрд╕рдХреЗ рдИрдореЗрд▓ рдХреЛ рдЬрд╛рдирдХрд░) рдЙрд╕реЗ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬреА рдЬрд╛рдПрдЧреА, рдФрд░ рдпрд╣ рд╡реНрдпрдХреНрддрд┐ рд╕рдордЭ рдЬрд╛рдПрдЧрд╛ рдХрд┐ 3 рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдЫреЛрдбрд╝реА рдЧрдИ рдЯрд┐рдкреНрдкрдгреА рдЙрдкрдпреЛрдЧреА рдереА, рд╡рд╣ рдкреНрд░рд╕рдиреНрди рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ, рдЗрд╕ рдИрдореЗрд▓ рдХреЛ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╣реА рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛ рдЪреБрдХрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХрд╛рд░реНрдп:
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИ, рдФрд░ рдкрдВрдЬреАрдХреГрдд рд╣реИ, рдФрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЫреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдПрдХ рд░реЗрдЯрд┐рдВрдЧ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ZOJCH рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ), рдФрд░ рд╕реНрдкреИрдорд░реНрд╕ рдмрдЧрд╝рд▓ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВред
OpenID
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╣реЛрдЧрд╛: Google, Yandex, MailRu, Rambler, Livejournal, MyOpenIDред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпреЗ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕реЗрд╡рд╛рдПрдВ рд╣реИрдВред (vkontakte, рдЯреНрд╡рд┐рдЯрд░ рдФрд░ рдлреЗрд╕рдмреБрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рдмрд╛рдж рдореЗрдВ)ред
OpenID рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ:
- Google - www.google.com/accounts/o8/id
- рдпреИрдВрдбреЗрдХреНрд╕ - openid.yandex.ru
- MailRu - [рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо] .id.mail.ru
- Livejournal - [рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо] .livejournal.com
- рд░рд╛рдордмреНрд▓рд░ - rambler.ru
- MyOpenID - myopenid.com
рдЕрдзрд┐рдХреГрдд рд╕рд╛рдЗрдЯреЛрдВ рдХреА рд╕реВрдЪреА (рдЬрдм рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА):
- Google - https://www.google.com/accounts/IssuedAuthSubTokens?hl=en
- рдпреИрдВрдбреЗрдХреНрд╕ - http://openid.yandex.ru/settings/trust_roots/
- MailRu - http://openid.mail.ru/sitelist
- Livejournal - рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ
- рд░рд╛рдордмрд▓рд░ - рдирд╣реАрдВ
- MyOpenID - https://www.myopenid.com/sites
рдПрдХ рдирдпрд╛ ASP.NET MVC3 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдореЗрдВ DotNetOpenAuth рдЬреЛрдбрд╝реЗрдВред рдЖрдк рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ OpenID рд╣реИред
рд╣рдо OpenID (рдЬреИрд╕реЗ рд╣реИрдВрдбрдХреЛрдб [рдзрдиреНрдпрд╡рд╛рдж]) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рддреЗ рд╣реИрдВ:
public class OpenIdController : Controller { private static OpenIdRelyingParty openIdProvider = new OpenIdRelyingParty(); public ActionResult Index(string userOpenId) { // . IAuthenticationResponse response = openIdProvider.GetResponse(); // response null, OpenID . if (response == null) { Identifier id; // OpenID . if (Identifier.TryParse(userOpenId, out id)) { try { // OpenID IAuthenticationRequest request = openIdProvider.CreateRequest(userOpenId); return request.RedirectingResponse.AsActionResult(); } catch (ProtocolException ex) { TempData["error"] = ex.Message; } } return RedirectToAction("Index", "Login"); } else { // OpenID switch (response.Status) { // case AuthenticationStatus.Authenticated: { TempData["id"] = response.ClaimedIdentifier; return RedirectToAction("Index", "Main"); } case AuthenticationStatus.Canceled: { TempData["message"] = " "; return RedirectToAction("Index", "Main"); } case AuthenticationStatus.Failed: { TempData["message"] = " ."; TempData["error"] = response.Exception.Message; return RedirectToAction("Index", "Main"); } default: { return RedirectToAction("Index", "Main"); } } } }}
рдЕрдм рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХреИрд╕реЗ рдХрд░реЗрдВ? 2 рддрд░реАрдХреЗ рд╣реИрдВ: FetchRequest рдФрд░ ClaimRequestред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐:
- Google рдХреЗ рд▓рд┐рдП - FetchRequest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
- рдпрд╛рдВрдбреЗрдХреНрд╕, рдореЗрд▓рд░реБ, рд░реИрдореНрдмрд▓рд░, рдорд╛рдпреЛрдкреЗрдирдЖрдИрдб рдХреЗ рд▓рд┐рдП - рдЖрдкрдХреЛ рдХреНрд▓реЗрдорд░реАрдкреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
- Rednecks LJ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдИ рднреА рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ
FetchRequest рдХреЗ рд▓рд┐рдП рд╣рдо рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рдВрдХреЗрдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЕрднреА рднреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛:
try { // OpenID IAuthenticationRequest request = openIdProvider.CreateRequest(userOpenId); FetchRequest fetch = new FetchRequest(); fetch.Attributes.Add(new AttributeRequest(WellKnownAttributes.Contact.Email, true)); fetch.Attributes.Add(new AttributeRequest(WellKnownAttributes.Name.First, true)); fetch.Attributes.Add(new AttributeRequest(WellKnownAttributes.Name.Last, true)); fetch.Attributes.Add(new AttributeRequest(WellKnownAttributes.Preferences.Language, true)); request.AddExtension(fetch); return request.RedirectingResponse.AsActionResult(); }
рдФрд░ рд╕рдлрд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рдмрд╛рдж, рд╣рдо рдпрд╣ рдбреЗрдЯрд╛ рд▓реЗрддреЗ рд╣реИрдВ:
case AuthenticationStatus.Authenticated: { var fetches = response.GetExtension<FetchResponse>(); if (fetches != null) { string str = string.Empty; str += string.Format("Email : {0} <br/>", fetches.Attributes[WellKnownAttributes.Contact.Email].Values[0]); str += string.Format(" : {0} <br/>", fetches.Attributes[WellKnownAttributes.Name.First].Values[0]); str += string.Format(" : {0} <br/>", fetches.Attributes[WellKnownAttributes.Name.Last].Values[0]); str += string.Format(" : {0} <br/>", fetches.Attributes[WellKnownAttributes.Preferences.Language].Values[0]); TempData["info"] = str; } TempData["id"] = response.ClaimedIdentifier; return RedirectToAction("Index", "Main"); }
рдЗрд╕реА рддрд░рд╣ рджрд╛рд╡реЗ рдХреЗ рд▓рд┐рдП: <br/>
try { // OpenID IAuthenticationRequest request = openIdProvider.CreateRequest(userOpenId); ClaimsRequest claim = new ClaimsRequest(); claim.BirthDate = DemandLevel.Require; claim.Country = DemandLevel.Require; claim.Email = DemandLevel.Require; claim.FullName = DemandLevel.Require; claim.Gender = DemandLevel.Require; claim.Language = DemandLevel.Require; claim.Nickname = DemandLevel.Require; claim.PostalCode = DemandLevel.Require; claim.TimeZone = DemandLevel.Require; request.AddExtension(claim); return request.RedirectingResponse.AsActionResult(); }
рдФрд░
// case AuthenticationStatus.Authenticated: { var claims = response.GetExtension<ClaimsResponse>(); if (claims != null) { string str = string.Empty; str += string.Format(" : {0} <br/>", claims.BirthDate); str += string.Format(": {0}<br/>", claims.Country); str += string.Format("Email: {0}<br/>", claims.Email); str += string.Format(" : {0}<br/>", claims.FullName); str += string.Format(": {0}<br/>", claims.Gender); str += string.Format(": {0}<br/>", claims.Language); str += string.Format(": {0}<br/>", claims.Nickname); str += string.Format(": {0}<br/>", claims.PostalCode); str += string.Format(" : {0}<br/>", claims.TimeZone); TempData["info"] = str; } TempData["id"] = response.ClaimedIdentifier; return RedirectToAction("Index", "Main"); }
рдареАрдХ рд╣реИ, рд╕рдм рдХреБрдЫ рд╕реБрдкрд░ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди (!) рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рд░рд╛рдордмреНрд▓рд░ рдХрд╛ рдЬрд╡рд╛рдм рд╣реИ, рдбреЙрдЯрдиреЗрдЯрдСрдкреЗрдирдЕрде рдЙрдирдХреЗ рдЬрд╡рд╛рдм рдХреЛ рдЧрд▓рдд рдмрддрд╛рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдУрдкрдирд░.рд▓рд╛рдпрд░реНрдб_рдЖрдИрдбреА рдФрд░ рдУрдкрдирд┐рдб.рдЗрдВрдбрд┐рдЯреА рдореЗрдВ рд░реИрдореНрдмрд▓рд░ - рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рджреЗрддрд╛ рд╣реИ, рдареАрдХ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдЙрд╕ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд▓рдЧрддреА рд╣реИ:
case AuthenticationStatus.Failed: { // DoTNetOpenAuth var email = Request.Params["openid.sreg.email"]; var fullname = Request.Params["openid.sreg.fullname"]; var nickname = Request.Params["openid.sreg.nickname"]; if (string.IsNullOrEmpty(email) || string.IsNullOrEmpty(fullname) || string.IsNullOrEmpty(nickname)) { TempData["message"] = " ."; TempData["error"] = response.Exception.Message; } else { AuthOpenID("http://id.rambler.ru/users/" + nickname, fullname); } return RedirectToAction("Index", "Main"); }
MailRu рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ред рд╡реИрд╕реЗ, рдпрд╣ рдЙрд╕ рд╕рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕реНрдерд┐рдд рд╣реИред рдпрд╛рдиреА рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХреЛрдИ рд╕рд╛рдЗрдЯ рдирд╣реАрдВ рд╣реИ рдФрд░ "рдЦрд╝рд░рд╛рдм рджрд╛рдпрд░реЗ" рддреНрд░реБрдЯрд┐ рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рдЗрдЯ рдХреЛ рдХрд╣реАрдВ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рддрдп рд╣реЛрддрд╛ рд╣реИред
рдореИрдВ рдпреВрдХреНрд░реЗрди рд╕реЗ рд╣реВрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдореЙрд╕реНрдХреЛ рд╕реЗ рдПрдХ рдШрдВрдЯреЗ рдкрд╣рд▓реЗ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рдПрдХ рдШрдВрдЯреЗ рдЕрдзрд┐рдХ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЙрддреНрддрд░ рдХреБрдЫ рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ 1 рдШрдВрдЯреЗ рдФрд░ рд╕реЗрдХрдВрдб рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЗ рдмрд╛рдж рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рдерд╛ред рдФрд░ рдЗрд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред Web.Config рдореЗрдВ рдХреБрдЫ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЬреЛрдбрд╝реЗрдВ:
<configSections> <section name="dotNetOpenAuth" type="DotNetOpenAuth.Configuration.DotNetOpenAuthSection" requirePermission="false" allowLocation="true"/> </configSections> ... <dotNetOpenAuth> <messaging clockSkew="60:00:00" lifetime="10:00:00" strict="true"> <untrustedWebRequest timeout="00:10:00" readWriteTimeout="00:01:00" maximumBytesToRead="1048576" maximumRedirections="10"> ... </untrustedWebRequest> </messaging> </dotNetOpenAuth>
рджреВрд╕рд░реА рддреНрд░реБрдЯрд┐ рдпрд╣ рд╣реИ рдХрд┐ ClaimResponse рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдмрд╕ Request.Params рд╕реЗ рдЪреБрдиреЗрдВ:
// case AuthenticationStatus.Authenticated: { string str = string.Empty; str += string.Format("Email: {0}<br/>", Request.Params["openid.sreg.email"]); str += string.Format(" : {0}<br/>", Request.Params["openid.sreg.fullname"]); str += string.Format(": {0}<br/>", Request.Params["openid.sreg.gender"]); str += string.Format(": {0}<br/>", Request.Params["openid.sreg.nickname"]); TempData["info"] = str; TempData["id"] = response.ClaimedIdentifier; return RedirectToAction("Index", "Main"); } </code>
OpenID рд╕рд╛рд░рд╛рдВрд╢
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ OpenID рджреНрд╡рд╛рд░рд╛ рддреЗрдЬрд╝ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ livejournal рд╡рд╣рд╛рдБ рдИрдореЗрд▓ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
OAuth
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, OAuth рдХреЛ рддреБрд░рдВрдд рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ OAuth рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ ред рд▓реЗрдХрд┐рди (!) рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╣реИ, рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд╛рдпрдХреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ:
рдлреЗрд╕рдмреБрдХ, рдЯреНрд╡рд┐рдЯрд░, рд╡реАрдХреЗред
рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЖрдкрдХреЛ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рд╕рд░рд▓ рд╣реИ, рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
- рдлреЗрд╕рдмреБрдХ - http://www.facebook.com/developers/apps.php
- рдЯреНрд╡рд┐рдЯрд░ - http://twitter.com/apps
- VKontakte - http://vkontakte.ru/apps.php#act=admin
рддрдм рд╣рдореЗрдВ рдЕрднреА рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐рдпрд╛рдВ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рд▓рд┐рдВрдХ рджрд┐рдП рдЧрдП рд╣реИрдВ:
- рдлреЗрд╕рдмреБрдХ - http://www.facebook.com/settings/?tab=applications
- рдЯреНрд╡рд┐рдЯрд░ - http://twitter.com/settings/connections
- VKontakte - рдХреЛрдИ рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ
рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реИрдВ рдЯреНрд╡рд┐рдЯрд░ рд╕реЗ
рдЯреНрд╡рд┐рдЯрд░ рдХреЗ рдкрд╛рд╕ рдПрдХ рдЙрдкрднреЛрдХреНрддрд╛ рдХреБрдВрдЬреА рдФрд░ рдПрдХ рдЙрдкрднреЛрдХреНрддрд╛ рд░рд╣рд╕реНрдп рд╣реИ - рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореВрд▓реНрдп рдЬреЛ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдЫрд┐рдкрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХрд┐рд╕реА рдХреЛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЖрдкрдХреЛ рдХреЙрд▓рдмреИрдХ URL, рд╡реЗрдмрд╕рд╛рдЗрдЯ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рддрдм рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рд╣рдо рдмрд╕ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдбреЙрдЯрдиреЗрдЯрдСрдкрдирдЕрде рдЯреНрд╡рд┐рдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ - рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рд┐рд░реНрдл рдЦреБрдж рдХреЛ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдмрд╛рдд рд╣реИред
рдлреЗрд╕рдмреБрдХ
рдУрд╣, рдпрд╣рд╛рдБ рдореИрдВрдиреЗ OAuth рдХреЛ рдмрдиреНрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 4 рдШрдВрдЯреЗ рдХреА рд╣рддреНрдпрд╛ рдХреА рдЬреЛ рдХрд┐ рдлреЗрд╕рдмреБрдХ рдкрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдбреЙрдЯрдиреЗрдЯрдСрдкрдирдЕрде рдореЗрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рддрдм рдореБрдЭреЗ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдорд┐рд▓рд╛: http://facebooknet.codeplex.com/ - рд╡рд╣рд╛рдВ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ (рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдпрд╣реЛрд╕реНрдЯ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдЗрдЯ рдкрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ)ред рд╡реИрд╕реЗ, рдпрд╣ рдлреЗрд╕рдмреБрдХ рдХреЗ рд╕рд╛рде рджрд┐рд╢рд╛рддреНрдордХ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдмрд╣реБрдд рдХреБрдЫред рдиреВрдЧреЗрдЯ рдореЗрдВ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдПрдХ Facebook рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 3 рдХреБрдВрдЬреА рд╣реИрдВ:
- ApplicationID
- ApplicationKey
- ApplicationSecret
рд╣рдо рд╕рднреА рдХреЛ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╣рдо рдЯреИрдм рд╡реЗрдм рд╕рд╛рдЗрдЯ рд╕рд╛рдЗрдЯ URL рдФрд░ рд╕рд╛рдЗрдЯ рдбреЛрдореЗрди рдореЗрдВ рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рдкреГрд╖реНрда http://developers.facebook.com/docs/authentication рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд╣рд╛рдВ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ:
рдЪрд░рдг 1. рдореИрдВ рдЕрдкрдирд╛ рдЖрд╡реЗрджрди рдкрддреНрд░ рджреЗрддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВ, рд╡реИрд╕реЗ, рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЧреБрдВрдЬрд╛рдЗрд╢ = рдИрдореЗрд▓ рдЬреЛрдбрд╝реЗрдВ рддрд╛рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдФрд░ рдИрдореЗрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
graph.facebook.com/oauth/authorize?client_id={0}&redirect_uri={1}&scope=email
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреЗрдЦрддрд╛ рд╣реИ:
рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдПрдХ рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╣рдореЗрдВ error_description рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред
рдЪрд░рдг 2. рдЕрдЧрд▓рд╛, рд╣рдо рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ access_token рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ:
graph.facebook.com/oauth/access_token?client_id={0}&redirect_uri={1}&client_secret={2}&code={3}
рдлрд┐рд░ рд╣рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд┐рд▓рддреА рд╣реИ рдЬреИрд╕реЗ:
access_token=114782445239544|2.izExIa_6jpjjhUy3s7EDZw__.3600.1291809600-708770020|VbEE8KVlLTMygGmYwm-V08aVKgY&expired=12010
рдпрд╛ JSON рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд╛рд░реНрдХрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдареАрдХ рд╣реИред
рдЪрд░рдг 3ред рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж access_token рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ:
graph.facebook.com/me?access_token={0}
JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рддреА рд╣реИред рд╣реБрд░реНрд░реЗ!
VKontakte
VKontakte, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдХрджрдо рд╕реЗ рдХрджрдо рдорд┐рд▓рд╛рдХрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЦрдбрд╝рд╛ рдерд╛ рдХрд┐ рдлреЗрд╕рдмреБрдХ рдкрд░ рдХреИрд╕рд╛ рд╣реЛрдЧрд╛ - рдЙрдиреНрд╣реЛрдВрдиреЗ рдмрд╕ рдЕрдкрдирд╛ рд╡рд┐рдЬреЗрдЯ рджрд┐рдпрд╛ рдФрд░ рд▓рд┐рдЦрд╛ "рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдбреЗрдЯрд╛ рдХрд╣рд╛рдВ рднреЗрдЬрдирд╛ рд╣реИред" рд╡рд┐рдЬреЗрдЯ рдХреЛ ApplicationID рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣реА рд╣реИред Vkontakte рдХреЛрдИ рднреА рдИрдореЗрд▓ рдирд╣реАрдВ рднреЗрдЬрддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рддрд╕реНрд╡реАрд░ рдФрд░ рдлрд╝реЛрдЯреЛ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред Javacript:
VK.init({ apiId: vkontakteAppId });
VK.Widgets.Auth("vk_auth", { width: "210px", authUrl: '/vkontakte' });
рдФрд░ рд╕рд╣реА рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:
public class VkontakteController : Controller { public ActionResult Index(string first_name, string last_name, string uid) { var str = string.Empty; str += string.Format(" : {0}<br/>", first_name); str += string.Format(": {0}<br/>", last_name); TempData["info"] = str; TempData["id"] = "http://vkontakte.ru/id" + uid; return RedirectToAction("Index", "Main"); } }
рдкрд░рд┐рдгрд╛рдо
рд╣рдордиреЗ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред MyOpenID, Yandex, Google, Facebook, MailRu - рдЖрдорддреМрд░ рдкрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдардВрдбрд╛ рд╣реЛрддрд╛ рд╣реИред Twitter, Livejournal, VKontakte - рдПрдХ рдИрдореЗрд▓ рдХреНрд▓реИрдВрдк (рдореИрдВ рдЯреНрд╡рд┐рдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд╛рд░рдВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ)ред рд░рд╛рдордмрд▓рд░ - рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдерд╛ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: http://cocosanka.ru
рд╕реВрддреНрд░ рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ: http://bitbucket.org/chernikov/smartauth
рдкреБрдирд╢реНрдЪ: рдореИрдВ Loginza рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реВрдБред Google рд╕реЗ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ Google рдореЗрд▓ рд╕реЗ рднреА рд╕рдВрдкрд░реНрдХ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд╛рдЧрд▓ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдХреНрдпреЛрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдФрд░?
PPS: рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╛рдВрдбреЗрдХреНрд╕ рдиреЗ OAuth рднреА рдмрдирд╛рдпрд╛ рд╣реИ ...