2013-02-23 4 views
0

введите код здесь Я следил за учебным пособием Facebook для C# и получал токен доступа, и я только что получил его, но я не могу понять шаг в их учебнике по обработке событий и перенаправление. Я никогда не делал ничего подобного, используя JavaScript для C#. У меня есть следующие:Redirect After Facebook Login C#

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
     FB.init({ 
      appId: '{app Id}', // 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 

     FB.Event.subscribe('auth.authResponseChange', function (response) { 
      if (response.status === 'connected') { 
       // the user is logged in and has authenticated your 
       // app, and response.authResponse supplies 
       // the user's ID, a valid access token, a signed 
       // request, and the time the access token 
       // and signed request each expire 
       var uid = response.authResponse.userID; 
       var accessToken = response.authResponse.accessToken; 

       // TODO: Handle the access token 

       // Do a post to the server to finish the logon 
       // This is a form post since we don't want to use AJAX 
       var form = document.createElement("form"); 
       form.setAttribute("method", 'post'); 
       form.setAttribute("action", '/FacebookLogin.ashx'); 

       var field = document.createElement("input"); 
       field.setAttribute("type", "hidden"); 
       field.setAttribute("name", 'accessToken'); 
       field.setAttribute("value", accessToken); 
       form.appendChild(field); 

       document.body.appendChild(form); 
       form.submit(); 

      } else if (response.status === 'not_authorized') { 
       // the user is logged in to Facebook, 
       // but has not authenticated your app 
      } else { 
       // the user isn't logged in to Facebook. 
      } 
     }); 
    }; 

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

, а также кнопки и все, Facebook работает найти, но затем, в соответствии с обучающей Here мне нужно «Далее, создать страницу, действие, или обработчик получить маркер и перенаправлять пользователь. В этом примере мы создадим общий обработчик ».

Они используют это:

public class FacebookLogin : IHttpHandler, System.Web.SessionState.IRequiresSessionState { 

    public void ProcessRequest(HttpContext context) { 
     var accessToken = context.Request["accessToken"]; 
     context.Session["AccessToken"] = accessToken; 

     context.Response.Redirect("/MyUrlHere"); 
    } 

    public bool IsReusable { 
     get { return false; } 
    } 
} 

Я просто положить, что в моем коде позади, но это ничего не делать. Я просто не уверен, что делать дальше. Как я могу получить мою страницу, чтобы перенаправить на новую страницу, так что я могу сделать что-то вроде этого:

var accessToken = Session["AccessToken"].ToString(); 
var client = new FacebookClient(accessToken); 
dynamic result = client.Get("me", new { fields = "name,id" }); 
string name = result.name; 
string id = result.id; 
+0

После выполнения некоторых испытаний она выглядит как FB.Event.subscribe («auth.authResponseChange», функция (ответ) никогда не набирается. Что мне не хватает? – KJ3

+0

У меня получилось работать, работая над ним сейчас, но, как и вы, не понимаете, как снова войти в систему, когда они обновляют сайт – rogue39nin

ответ

0

Убедитесь, что вы не поставить обработчик FacebokLogin в коде aspx.cs за файл. Это должен быть отдельный файл .ashx.

В вашем комментарии вы сказали, что FB.Event.subscribe ('auth.authResponseChange', function (response) {...} никогда не будет вызван. Попробуйте включить apiKey: «[токен OAuth идет здесь]» в FB. INIT. Не уверен, что если он будет работать, но это будет стоить выстрел.

Eg

FB.init({ 
    appId: '{app Id}', // App ID 
    status: true, // check login status 
    cookie: true, // enable cookies to allow the server to access the session 
    xfbml: true, // parse XFBML 
    apiKey: "92834yv221985vn4139y845vn19835vynv519835vn" 
});