2010-08-12 80 views
6

我正在使用DotNetOpenAuth登录到Facebook
下面是代码:如何设置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); 
     } 
    } 
} 

由于我使用自定义URL重写,我登录后收到一个错误,因为返回的URL是一样的东西

〜/富/ foo.aspx ?labg = EN

,我希望它硬编码它

〜/富/富

任何帮助,将不胜感激

回答

6

你需要一个回调URL来初始化AuthorizationState对象,并传递到一个稍微不同的方法:

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