2010-08-12 10 views
6

Estoy usando DotNetOpenAuth para iniciar sesión en Facebook.
Aquí está el código:Cómo establecer la URL de devolución para DotNetOpenAuth

var facebookClient = new FacebookClient 
{ 
    ClientIdentifier = "appId", 
    ClientSecret = "appSecret" 
}; 
IAuthorizationState authorization = facebookClient.ProcessUserAuthorization(); 
if (authorization == null) 
{ 
    // Kick off authorization request 
    facebookClient.RequestUserAuthorization(); 
} 
else 
{ 

    var request = 
     WebRequest.Create("https://graph.facebook.com/me?access_token=" + 
          Uri.EscapeDataString(authorization.AccessToken)); 

    using (var response = request.GetResponse()) 
    { 
     using (var responseStream = response.GetResponseStream()) 
     { 
      var graph = FacebookGraph.Deserialize(responseStream); 
      lblFacebookUserName.Text = HttpUtility.HtmlEncode(graph.Name); 
     } 
    } 
} 

Desde que estoy usando regrabadora URL personalizada, estoy recibiendo un error después de inicio de sesión porque url de retorno es algo así como

~/foo/foo.aspx ? labg = es

y yo quiero que codificar a

~/Foo/foo

Cualquier ayuda se agradece

Respuesta

6

Es necesario para inicializar el objeto AuthorizationState con una URL de devolución de llamada y pasar a que, en un método ligeramente diferente:

// Kick off authorization request 
var authorizationState = new AuthorizationState() 
{ 
    Callback = new Uri(Request.Url, Page.ResolveUrl("~/foo/foo")); 
}; 
facebookClient.PrepareRequestUserAuthorization(authorizationState).Send(); 
Cuestiones relacionadas