用facebook验证ASP.NET网站

Lea*_*ria 5 asp.net facebook facebook-c#-sdk web

我已经看过很多关于ASP .NET网站和Facebook之间集成的文档,但我还没有找到一个简单的工作示例,即使使用Facebook C#SDK.

我想要的只是"登录Facebook"的例子,并获取基本的用户信息(如姓名,电子邮件和照片).

你能帮帮我吗?

非常感谢!

asd*_*hak 9

如你所说using Facebook C# SDK,这里是路径和一些画布应用程序的代码:

1-从visual studio创建您的Web应用程序
2-安装nuget并通过nuget Facebook C# SDK
3-从https://developers.facebook.com/apps/创建和配置您的应用程序获取.
4-您的Facebook集成的web配置:

<configuration>
  <configSections>
    <section name="facebookSettings" type="Facebook.FacebookConfigurationSection" />
  </configSections>
  <facebookSettings appId="123..." appSecret="abc...." siteUrl="http://apps.facebook.com/myapp/" canvasPage="http://app.facebook.com/myapp" secureCanvasUrl="https://myapp.com/" canvasUrl="http://myapp.com/" cancelUrlPath="http://www.facebook.com/" />
...
Run Code Online (Sandbox Code Playgroud)

通过使用sdk,您可以解析由facebook js sdk编写的签名请求或cookie

FacebookWebContext fbWebContext = new FacebookWebContext();
//Check if user auhtenticated
bool IsAuthenticated = fbWebContext.IsAuthenticated(); 
Run Code Online (Sandbox Code Playgroud)

在这里你可以有朋友数:

FacebookWebClient fbWebClient = new FacebookWebClient();
dynamic result = fbWebClient.Get("me/friends");
var friends = result["data"];
int frienCount = friends.Count;
Run Code Online (Sandbox Code Playgroud)

对于客户端:

<body> 
<div id="fb-root"></div>
<script>

window.fbAsyncInit = function () {
    FB.init({ 
    appId: '123...', 
    status: true, 
    cookie: true, 
    xfbml: true, 
    oauth:true  });
};
(function () {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);            
} ());

<!-- rest of your html -->

</body>
Run Code Online (Sandbox Code Playgroud)

用于登录和询问权限 javascript

    FB.getLoginStatus(function(response) {
        console.log( response );
        if ((response.status)&&(response.status=='connected')) {
            //successs
        } else {
            //user declined 
           }, {scope:'user_likes, offline_access'}

    });
Run Code Online (Sandbox Code Playgroud)

我更喜欢在我的项目中向客户端登录,因此尚未注册的用户有登陆页面,如果例如提交表单,那么我在上面调用代码块.

注意:您必须根据服务器将Internet Explorer的P3P标头设置为读/写cookie.对于IIS, global.asax:

protected void Application_BeginRequest(Object sender, EventArgs e)
{

    HttpContext.Current.Response.AddHeader("p3p", "CP=\"CAO PSA OUR\"");

}
Run Code Online (Sandbox Code Playgroud)

Volià