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 获取更多用户信息作为响应,但它并没有返回给我更多信息。例如,我将此 URL https://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 令牌

Facebook Oauth 2.0 访问令牌会过期吗?

OAuth_2

使用 Firebase 登录 Facebook 导致无效 OAuth 访问令牌错误

强制注销facebook oauth

登录 facebook oauth 访问令牌是不是安全?