MVC4 oauth facebook 访问用户和朋友权限:
Posted
技术标签:
【中文标题】MVC4 oauth facebook 访问用户和朋友权限:【英文标题】:MVC4 oauth facebook accessing User & Friend Permissions: 【发布时间】:2012-08-25 22:47:07 【问题描述】:现在使用新的 mvc4 让我们可以使用 facebook oauth otb。
我在 facebook 中创建了一个新应用程序,并设置了一些额外的要求,以询问用户电子邮件地址/位置和生日的权限。
我已经在 fb 中保存了更改,当单击预览身份验证对话框时,我可以看到我希望在预览窗口中显示的额外权限。
当我尝试对 facebook 进行身份验证时,系统不会询问我是否允许我在 facebook 中设置的额外字段。
我的 mvc 应用程序中是否还有其他内容需要更改才能将这些额外要求传递给 facebook?
感谢您的帮助。
【问题讨论】:
【参考方案1】:看来您必须编写自己的自定义提供程序。如果是这样,你应该看看 http://blogs.msdn.com/b/webdev/archive/2012/08/23/plugging-custom-oauth-openid-providers.aspx 和 http://blog.mrroa.com/post/30454808112/asp-net-custom-linkedin-oauth-provider
我所做的是:
在AccountController
:
- 我使用 Facebook 添加; (facebook.dll
来自 www.csharpsdk.org)
也在AccountController
,在ExternalLoginCallback
中找到:
在这里,我使用 facebook c# sdk 在调用 CreateOrUpdateAccount
之前请求额外的权限。
我认为这不是最好的解决方案,但它确实有效。
【讨论】:
我已关注 rroa 自定义提供程序,并尝试使用自定义提供程序从 LinkedIn 获取更多用户信息作为响应,但它并没有返回给我更多信息。例如,我将此 URLhttps://api.linkedin.com/v1/people/~:(id,first-name,last-name,headline,industry,summary)
更改为新 URL https://api.linkedin.com/v1/people/~:(id,email-address,first-name,last-name,headline,industry,summary)
以获取用户电子邮件,但它从未返回我的用户电子邮件。有什么建议我怎样才能获得更多的用户信息?
好的。经过大量搜索,我得到了解决方案here。我们需要在RequestTokenEndpoint = new MessageReceivingEndpoint("https://api.linkedin.com/uas/oauth/requestToken?scope=r_basicprofile,r_emailaddress", HttpDeliveryMethods.PostRequest)
这一行添加范围。可以添加越来越多的范围以获取更多数据
从这篇文章tinyurl.com/aherzvm 中查看这个解决方案:在 MVC4 Internet 项目中更新 NuGet 包。 DotNetOpenAuthCore。它将自动更新所有依赖项。现在 result.UserName 将包含电子邮件地址而不是您的姓名。【参考方案2】:
我在 facebook 中创建了一个新应用程序,并设置了一些额外的要求,以询问用户电子邮件地址/位置和生日的权限。
我已经在 fb 中保存了更改,当单击预览身份验证对话框时,我可以看到我希望在预览窗口中显示的额外权限。
当我尝试对 facebook 进行身份验证时,系统不会询问我是否允许我在 facebook 中设置的额外字段。
这听起来你是另一个对 Authenticated Referrals 实际做什么感到困惑的人。 (您的应用设置中的权限字段仅适用于那些!)
Authenticated Referrals 会在用户点击任何链接重定向到 Facebook 上的应用时发挥作用。
但是,如果您是自己登录,则必须使用 scope
参数请求您想要的权限。
【讨论】:
嘿@CBroe 我过去使用过 js sdk,所以我知道需要添加范围详细信息。因此,开箱即用提供的默认设置不允许我添加范围设置。我是否需要创建一个允许我添加范围详细信息的自定义 Facebook 客户端? 我不知道你的开发环境中的“默认”和“开箱即用”是什么……【参考方案3】:不幸的是,如果您在 MVC 4 附带的 FacebookClient 类上使用 ILSpy,您会看到 MS 代码根本不请求电子邮件信息,即使底层 DotNetOpenAuth 类支持它。
因此,您需要实现自己的 FacebookClient 类,该类几乎完成相同的操作,但将电子邮件地址添加到请求的项目中。我自己现在正在尝试这个,并希望它尽快工作。
【讨论】:
以上是关于MVC4 oauth facebook 访问用户和朋友权限:的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Oauth2 和 chrome.identity 获取 Facebook 令牌