Проверка подлинности веб-сайта ASP.NET с помощью Facebook - PullRequest
5 голосов
/ 24 декабря 2011

Я видел много документации по интеграции между веб-сайтами ASP .NET и Facebook, но я не нашел простого рабочего примера, даже используя Facebook C # SDK.

Все, что я хочу, этоПример "Войти через Facebook" и получить основную информацию о пользователе (например, имя, адрес электронной почты и фото).

Не могли бы вы, ребята, помочь мне, пожалуйста?

1 Ответ

9 голосов
/ 24 декабря 2011

как вы говорите using Facebook C# SDK, тогда вот путь и некоторый код для приложения canvas:

1 - Создайте свое веб-приложение из visual studio
2 - установить nuget и получить по nuget Facebook C# SDK
3 - из https://developers.facebook.com/apps/ создайте и настройте свое приложение.
4- Ваша веб-конфигурация для интеграции с Facebook:

<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/" />
...

Используя SDK, вы можете проанализировать подписанный запрос или файл cookie, написанный Facebook. JS SDK

FacebookWebContext fbWebContext = new FacebookWebContext();
//Check if user auhtenticated
bool IsAuthenticated = fbWebContext.IsAuthenticated(); 

Здесь вы можете подсчитать количество друзей:

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

Для клиентской стороны:

<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>

Для входа и запроса разрешения от javascript

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

    });

В своем проекте я предпочитаю вход на стороне клиента, поэтому еще не зарегистрированный пользователь имеет целевую страницу, если, например, отправить форму, я вызываю блок кода выше.

Примечание: вы должны установить заголовок P3P для Internet Explorer для чтения / записи cookie в зависимости от вашего сервера. для IIS global.asax:

protected void Application_BeginRequest(Object sender, EventArgs e)
{

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

}

ВОЛЯ

...