【问题标题】:I need to authenticate users with Facebook through C#, without the JS SDK我需要通过 C# 对 Facebook 用户进行身份验证,而不需要 JS SDK
【发布时间】:2019-11-12 15:00:48
【问题描述】:

我意识到这种问题以前已经被问过很多次了,但我正在寻找一个快速可用的代码库来实现以下内容:通过 Facebook 进行 SSO 登录作为外部身份验证,并检索当前用户的电子邮件(鉴于他们授予访问权限)。我仅限于 c# 环境,而且 c# 解决方案或实现似乎很少而且相差甚远。在这种情况下 JS 是不可接受的,我似乎一直在碰壁“将 Facebook JS SDK 与 Graph API 一起使用”。

ANYBODY 是否为 C# 中的简单身份验证和后续用户数据检索创建了一个主要的服务器端解决方案?我最终需要的只是电子邮件地址。

我最大的问题是,这必须是一个主要是服务器端的实现,并且最广泛记录的资源都是面向 PHP 和/或 JavaScript 的。

欢迎任何帮助。提前谢谢...我几乎没有选择...

上下文:对于许多访问一个站点而不必创建登录名的用户来说,这将是一种 SSO 类型的情况......问题是,在进行身份验证后,我必须收到他们的电子邮件(前提是他们同意) .

我浏览过过时的库,解决方案更多地与墙和页面交互等有关。我的需求非常简单。需要身份验证和电子邮件检索。

我有一个已经在 FB 注册的应用程序,并且我已经获得了一个“不记名”类型的有效访问令牌。这就是我迷路的地方...

同样,我不能使用基于 FB JS 的 SDK。呃

编辑:我尝试使用来自Piotr Gankiewicz 的库,但它似乎是为更复杂的目的而构建的。我似乎无法弄清楚应该是一个相对简单的过程。

编辑 2:我使用“Facebook 登录”产品开始了这个过程,但它似乎在身份验证之后出现故障,并且我在范围内请求“电子邮件”。没有错误,只是没有电子邮件,而且我控制的测试和真实帐户都是如此。

我发现的一切都开始涉及 SDK 并使用 Graph API。我真的不知道我错过了什么。

编辑 3:我所做的快速示例(不,这还不是全部,但这是最有意义的开始):

链接到: https://www.facebook.com/v3.3/dialog/oauth?client_id=[Client_Id]&redirect_uri=https://localhost:44304/auth/facebook&response_type=code&scope=public_profile,email&state=[Long_Code_To_Verify_Call]

我使用该帖子的结果来完成并获取以下内容: string getTokenUrl = "https://graph.facebook.com/v3.3/oauth/access_token?client_id=[Client_Id]&scope=email&redirect_uri=https://localhost:44304/auth/facebook&client_secret=[Client_Secret]&code=" + [Code_Returned_From_Previous_Post];

在简单的初始登录请求之后,对于我的目的来说,Graph API 似乎有点过头了。这也是我第一次尝试实现 OAuth 解决方案...

【问题讨论】:

  • 您只需要使用用户令牌向 Graph API 播放 Web 请求。在 System.Net.Http 中使用 HttpClient。
  • @BlueWater86 实际上,我已经尝试使用 HttpClient 使用返回的“bearer”类型的 access_token 进行多次调用,但我无法找到任何不使用的示例基于 FB JavaScript 的 SDK。我试图找到一个简单的语法布局(很可能来自 SDK),我可以用服务器端调用而不是客户端来模拟它...... C#
  • 我觉得我就在它的边缘,但就是无法获得最后一条数据:电子邮件。我验证应用程序和登录请求。我取回了用户的令牌(access_token,类型:bearer),但我似乎无法获取电子邮件地址。

标签: c# facebook oauth


【解决方案1】:

我在详细请求中使用了错误的令牌。我的解决方案是 frankencode,但它有效。很抱歉浪费了宝贵的字节。感谢 BlueWater86。

【讨论】:

  • 很高兴你能成功。您现在可以通过API Explorer 获得任何信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
  • 2021-01-03
  • 2021-10-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
相关资源
最近更新 更多