2014-01-13 5 views
2

У меня есть веб-приложение, в котором любой пользователь, если выбирает автоматизацию социальных сетей, таких как твиттер, нажимает кнопку твиттера и выполняет процедуру oauth. Этот процесс oauth выполняется с использованием php.Учетщик нескольких пользователей LinqToTwitter

Я храню токен oauth и секретный секрет для этого конкретного пользователя в базе данных.

Теперь у меня есть четыре клавиши:

ConsumerKey // common for all as it is the key of app in dev.twitter.com 
ConsumerSecret // common for all as it is the secret of app in dev.twitter.com 
OauthToken //store in database, which keeps on changing as other user activates the socia media 
OauthTokenSecret //store in database, which keeps on changing 

Я применил все техника, разрешающее, как показано ниже:

var auth = new MvcAuthorizer 
      { 
       Credentials = new InMemoryCredentials 
       { 
        ConsumerKey = "###################", 
        ConsumerSecret = "##################", 
        OAuthToken = token, 
        AccessToken = secret 
       } 
      }; 
      auth.Authorize(); 


var auth = new SingleUserAuthorizer 
      { 
       Credentials = new InMemoryCredentials 
       { 
        ConsumerKey = "###############", 
        ConsumerSecret = "#############################", 
        OAuthToken = token, 
        AccessToken = secret 
       } 
      }; 
      auth.Authorize(); 

Проблема заключается в том, если я введу Токен и секрет, который указан на сайте dev.twitter.com все работает нормально, но если я предоставляю токен и секрет, хранящиеся в базе данных, он не аутентифицирует пользователя.

ответ

1

На SingleUserAuthorizer не вызывайте Авторизованный. Кроме того, каждый раз, когда вы предоставляете все 4 учетных данных любому авторизатору, вам не нужно вызывать Autehirize. LINQ to Twitter будет использовать эти учетные данные для создания заголовка авторизации.

В случае, если вы назовёте авторизацию, вы предоставили только ConsumerKey и ConsumerSecret, а тип авторизатора - не SingleUserAuthorizer. Авторизовать реализует часть протокола OAuth, которая получает OAuthToken и AccessToken.

Ваш синтаксис SingleUserAuthorizer должен работать, но вот еще один способ, который соответствует ключи к тому, как Twitter приложение страницы называет их:

 var auth = new SingleUserAuthorizer 
     { 
      Credentials = new SingleUserInMemoryCredentials 
      { 
       ConsumerKey = ConfigurationManager.AppSettings["twitterConsumerKey"], 
       ConsumerSecret = ConfigurationManager.AppSettings["twitterConsumerSecret"], 
       TwitterAccessToken = ConfigurationManager.AppSettings["twitterAccessToken"], 
       TwitterAccessTokenSecret = ConfigurationManager.AppSettings["twitterAccessTokenSecret"] 
      } 
     }; 
+0

что, если я использую другую и секретный маркер доступа каждый раз. будет ли он аутентифицироваться. –

+0

потому что токены и секрет отличаются для разных пользователей. И когда я предоставляю этот токен и секрет, он дает мне ошибку 403, и если я предоставляю токен и секрет, который есть на сайте dev.twitter.com для моего приложения, он отлично работает, но только с одним учетным данными пользователя. –

+0

Для пользователей вы можете также используйте PinAuthorizer и укажите все 4 жетона. –

Смежные вопросы