2012-03-09 1 views
1
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); 
     } 
    } 
} 

линиюКак войти в facebook с помощью DotNetOpenAuth

IAuthorizationState authorization = facebookClient.ProcessUserAuthorization(); 

всегда возвращают null

+0

Обратите внимание, что в новой версии DotNetOpenAuth.ApplicationBlock, ClientSecret не существует. Теперь это должно быть следующим: FacebookClient fbClient = new FacebookClient { ClientIdentifier = "appId", ClientCredentialApplicator = ClientCredentialApplicator.PostParameter ("appSecret") }; –

ответ

1

Я не эксперт, но это не так, потому что у вас всегда есть новый FacebookClient, который никогда запрашиваемая авторизация пользователя? Ваш рабочий процесс мне кажется странным ...

Есть ли в этом разница:

var facebookClient = new FacebookClient 
{ 
    ClientIdentifier = "appId", 
    ClientSecret = "appSecret" 
}; 
// Kick off authorization request, as have a new client that needs to be authorised 
facebookClient.RequestUserAuthorization(); 
// get the result of the authorization 
IAuthorizationState authorization = facebookClient.ProcessUserAuthorization(); 
if (authorization == null) 
{ 
    //throw not authorized exception or whatever 
} 
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); 
     } 
    } 
} 
+0

Вы получили это, чтобы работать? можете ли вы опубликовать код? – user1186651