Facebook SDK登录URL公开客户端机密?

Facebook SDK登录URL公开客户端机密?,facebook,facebook-c#-sdk,Facebook,Facebook C# Sdk,我目前正在建立一个网站,我将为用户提供一个在Facebook上共享照片的链接,该应用程序将: 向用户提供从Facebook请求权限的链接 使用用户接受权限后的访问代码重定向回网站 服务器端将照片发布到用户的照片中 要为第一步生成链接,我将执行以下操作: var fb = new FacebookClient(); var options = new { client_id = "MY_APP_ID", client_secret = "MY_APP_SECRET",

我目前正在建立一个网站,我将为用户提供一个在Facebook上共享照片的链接,该应用程序将:

  • 向用户提供从Facebook请求权限的链接
  • 使用用户接受权限后的访问代码重定向回网站
  • 服务器端将照片发布到用户的照片中
要为第一步生成链接,我将执行以下操作:

var fb = new FacebookClient();
var options = new
{
    client_id = "MY_APP_ID",
    client_secret = "MY_APP_SECRET",
    redirect_uri = string.Format("http://localhost:51182/Home/FacebookShare?path={0}", Server.UrlEncode(path)),
    response_type = "code",
    scope = "publish_stream"
};
var loginUrl = fb.GetLoginUrl(options);
然后将此
loginUrl
值添加到我的MVC ViewModel中,并在视图中的链接中使用


但是,我注意到,
loginUrl
以明文形式包含
client\u secret
值。这不是件坏事吗?用户不应该看不到
客户机的秘密吗?我做得不对吗?

fb.GetLoginUrl
方法相当简单,它只是将您在
选项
对象中提供的任何内容作为参数添加到创建的URL中

因此,采取

client_secret = "MY_APP_SECRET",

从您的
选项
对象中删除,它不应该再显示在登录URL中。

fb.GetLoginUrl方法相当简单,因为它只是将您在
选项
对象中提供的任何内容作为参数添加到创建的URL中

因此,采取

client_secret = "MY_APP_SECRET",

超出了您的
选项
对象,它不应该再出现在登录URL中。

@CBroe:是的,您确实是对的。如果您愿意,请继续添加作为答案。我需要找到我从中获得代码的教程,并让作者知道…@CBroe:是的,你确实是对的。如果您愿意,请继续添加作为答案。我需要找到我从中获得该代码的教程,并让作者知道……为了完整性(以帮助以后可能偶然发现该代码的任何人),这是我获得该代码的页面:@David Good catch with that。我盲目地遵循开发者指南。我为此道歉。为了进一步的完整性,这篇文章现在已经更新和修复。为了完整性(为了帮助以后可能偶然发现这一点的任何人),这是我获得代码的页面:@davidgood catch with that。我盲目地遵循开发者指南。我为此道歉。为了进一步的完整性,这篇文章现在已经更新和修复。