对于身份验证系统,我使用新的基于OWIN的ASP.NET身份引擎(http://blogs.msdn.com/b/webdev/archive/2013/07/03/understanding-owin-forms-authentication-in-mvc-5.aspx),因为它大大简化了与外部提供程序进行身份验证的过程。
问题是,一旦用户首次登录,我想从Facebook配置文件获取其电子邮件地址,但此数据不包括在生成的声明中。所以我想过这些替代方案来获得地址:
>指示ASP.NET身份引擎在其中包含电子邮件地址
从Facebook检索然后转换的数据集
到索赔。我不知道这是否可能。
>使用Facebook图API
(https://developers.facebook.com/docs/getting-started/graphapi)至
通过使用Facebook用户ID检索电子邮件地址(即
包括在索赔数据中)。但这不会工作,如果用户有
将他的电子邮件地址设为私人。
>使用Facebook图形API,但指定“我”而不是
Facebook用户ID
(https://developers.facebook.com/docs/reference/api/user)。但是
访问令牌是必需的,我不知道如何(或如果它是
可能在所有)检索ASP.NET使用的访问令牌
获取用户数据。
所以问题是:
>我如何指示ASP.NET身份引擎检索
来自Facebook的附加信息,并将其包含在索赔中
数据?
>或者,如何检索生成的访问令牌等
我可以问Facebook吗?
谢谢!
注意:对于身份验证系统,我的应用程序使用基于此SO答案中链接的示例项目的代码:http://stackoverflow.com/a/18423474/4574
解决方法
var facebookOptions = new Microsoft.Owin.Security.Facebook.FacebookAuthenticationoptions() { Provider = new FacebookAuthenticationProvider() { OnAuthenticated = (context) => { // All data from facebook in this object. var rawUserObjectFromFacebookAsJson = context.User; // Only some of the basic details from facebook // like id,username,email etc are added as claims. // But you can retrieve any other details from this // raw Json object from facebook and add it as claims here. // Subsequently adding a claim here will also send this claim // as part of the cookie set on the browser so you can retrieve // on every successive request. context.Identity.AddClaim(...); return Task.Fromresult(0); } } }; //Way to specify additional scopes facebookOptions.Scope.Add("..."); app.UseFacebookAuthentication(facebookOptions);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。