(Tweetinvi) — AuthFlow.CreateCredentialsFromVerifierCode(verifierCode, token); возвращает ноль

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

Помимо Твиттера, у меня такая же проблема с моим кодом для аутентификации Facebook и LinkedIn, ведь обе ведьмы также работали нормально раньше ???

Начиная с самого начала, я перешел на вики-страницу Tweetinvi: https://github.com/linvi/tweetinvi/wiki/Authentication И я скопировал код для его тестирования и отладки.

Сначала у меня возникла проблема с тем, что (токен = новый AuthenticationToken) в ValidateTwitterAuth ActionResult был нулевым, но я исправил это, следуя инструкции, которая сработала. Но затем следующая проблема заключалась в том, что UserCredentials ITwitterCredentials имеет значение null, и я понятия не имею, почему?

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

Мой код:

(Часть домашнего контроллера)

(Я удалил app-id и app-secret, но я проверил их, так что проблема не в них)

private IAuthenticationContext _authenticationContext;

// Step 1 : Redirect user to go on Twitter.com to authenticate
public ActionResult TwitterAuth()
{
    var appCreds = new ConsumerCredentials("APP-ID", "APP-SECRET");

    // Specify the url you want the user to be redirected to
    var redirectURL = "http://" + Request.Url.Authority +"/Home/ValidateTwitterAuth";
    _authenticationContext = AuthFlow.InitAuthentication(appCreds, redirectURL);

    return new RedirectResult(_authenticationContext.AuthorizationURL);
}


public ActionResult ValidateTwitterAuth()
{
    var token = new AuthenticationToken()
    {
        AuthorizationKey = "APP-ID",
        AuthorizationSecret = "APP-SECRET",
        ConsumerCredentials = new ConsumerCredentials("APP-ID", "APP-SECRET")
    };


    // Get some information back from the URL
    var verifierCode = Request.Params.Get("oauth_verifier");

    // Create the user credentials
    ITwitterCredentials userCreds = AuthFlow.CreateCredentialsFromVerifierCode(verifierCode, token);

    // Do whatever you want with the user now!
    ViewBag.User = Tweetinvi.User.GetAuthenticatedUser(userCreds);


    string access_token = userCreds.AccessToken;
    string access_token_secret = userCreds.AccessTokenSecret;


    return RedirectToAction("Index", "Home");
}

заранее спасибо


person TheRWS96    schedule 06.01.2017    source источник


Ответы (1)


Ваша проблема исходит из следующего:

var token = new AuthenticationToken()
{
    AuthorizationKey = "APP-ID",
    AuthorizationSecret = "APP-SECRET",
};

AuthorizationKey и AuthorizationSecret не являются APP_ID и APP_SECRET.

Вы должны получить эту информацию из своего _authenticationContext, созданного в вашем ActionResult TwitterAuth().

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

Если вы не используете балансировку нагрузки, я бы предложил следующий код, использующий параметры URL:

public ActionResult TwitterAuth()
{
    var appCreds = new ConsumerCredentials(MyCredentials.CONSUMER_KEY, MyCredentials.CONSUMER_SECRET);
    var redirectURL = "http://" + Request.Url.Authority + "/Home/ValidateTwitterAuth";
    var authenticationContext = AuthFlow.InitAuthentication(appCreds, redirectURL);

    return new RedirectResult(authenticationContext.AuthorizationURL);
}

public ActionResult ValidateTwitterAuth()
{
    var verifierCode = Request.Params.Get("oauth_verifier");
    var authorizationId = Request.Params.Get("authorization_id");

    if (verifierCode != null)
    {
        var userCreds = AuthFlow.CreateCredentialsFromVerifierCode(verifierCode, authorizationId);
        var user = Tweetinvi.User.GetAuthenticatedUser(userCreds);

        ViewBag.User = user;
    }

    return View();
}

Подробнее об этом можно прочитать здесь: https://github.com/linvi/tweetinvi/wiki/Authentication#web-application-considerations.

person Linvi    schedule 07.01.2017
comment
Большое спасибо, я действительно чувствовал себя плохо из-за того, что все мои обработчики токенов внезапно перестали работать. Но теперь это один вниз, два идти :) - person TheRWS96; 08.01.2017