Получить запрос на аутентификацию в приложении на странице Facebook - PullRequest
0 голосов
/ 13 марта 2012

Я хочу разработать приложение с вкладками страниц в Facebook

До сих пор я всегда разрабатывал приложения для страниц холста, используя asp.net, так что это будет мое первое приложение с вкладками страниц

И язастрял при получении запроса на аутентификацию для информации о пользователе и списка друзей

Я использовал DLL-инструментарий графика Facebook, разработанный computerbeacon, но это не решает мою проблему для вкладки страницы

Любой исходный код на c # или JavaScriptможет помочь мне, я могу использовать jssdk или C # sdk, но я просто хочу пример или ссылку, чтобы я мог узнать, как это возможно в приложениях на вкладках страниц


Я поместил этот код на свою страницу, но этоговорит, что FB не определен, если я добавлю connect.Facebook, all.js в раздел head на этот раз, он говорит, что fb.login вызван до fb.init, и он не показывает окно разрешений обоими способами

<body>
 <div id="fb-root"></div> 
  <script>
    window.fbAsyncInit = function () {
    FB.init({
        appId: '396868406993330', // App ID 

        status: true, // check login status 
        cookie: true, // enable cookies to allow the server to access the session 
        xfbml: true  // parse XFBML 
    });

    // Additional initialization code here 
};

// Load the SDK Asynchronously 
(function (d) {
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
    if (d.getElementById(id)) { return; }
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    ref.parentNode.insertBefore(js, ref);
} (document)); 
 </script> 
<form id="form1" runat="server">
<div>
hello world


<script>
    FB.login(function (response) {
        if (response.authResponse) {
            console.log('Welcome!  Fetching your information.... ');
            FB.api('/me', function (response) {
                console.log('Good to see you, ' + response.name + '.');
            });
        } else {
            console.log('User cancelled login or did not fully authorize.');
        }
    }, { scope: 'email,user_likes' }); 

   </script>
    </div>
    </form>
     </body>

Ответы [ 3 ]

0 голосов
/ 13 марта 2012

Facebook-c # -sdk много изменился с версии 5 на бета-версию v6 (последняя версия), больше нет методов аутентификации facebook на стороне сервера. Для аутентификации пользователя и получения некоторых данных вам нужно либо.

  1. Аутентификация из Javascript и публикация строки токена доступа с помощью запроса на серверную сторону.

  2. Создание URL-адреса для входа через facebook-c # -sdk и перенаправить пользователя на авторизацию.диалог.

Чтобы получить facebook-c # -sdk v6, используйте следующую команду в NuGet.

Install-Package facebook -pre

Для Javascript просто обратитесь к библиотеке JS, например:simon604 сказал.

Хороший способ связи как клиентского JS, так и сервера C # - создать скрытое поле, содержащее строку токена доступа.

0 голосов
/ 13 марта 2012

хорошо, я нашел эту ссылку на Facebook https://developers.facebook.com/blog/post/525/

, это решает мою проблему с запросом разрешения

, теперь я сосредоточен на использовании токена доступа для получения информации о пользователе и друзьях

спасибо за ответы

0 голосов
/ 13 марта 2012

Вы можете использовать Facebook JavaScript SDK , а именно функцию FB.login , чтобы запросить разрешение у внешнего интерфейса.

Пример:

FB.login(function(response) {
   if (response.authResponse) {
     console.log('Welcome!  Fetching your information.... ');
     FB.api('/me', function(response) {
       console.log('Good to see you, ' + response.name + '.');
     });
   } else {
     console.log('User cancelled login or did not fully authorize.');
   }
 }, {scope: 'email,user_likes'});

Не забудьте сначала загрузить FB JS SDK.т.е.

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'YOUR_APP_ID', // App ID
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
      status     : true, // check login status
      cookie     : true, // enable cookies to allow the server to access the session
      xfbml      : true  // parse XFBML
    });

    // Additional initialization code here
  };

  // Load the SDK Asynchronously
  (function(d){
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all.js";
     ref.parentNode.insertBefore(js, ref);
   }(document));
</script>
...