Проверка подлинности Twitter в Codebird JS

Я очень новичок в интеграции социальных сайтов в веб-сайт. Мне удалось интегрировать Facebook, но я понятия не имею, как интегрировать Twitter.

Я хочу войти через учетную запись Twitter, затем получить имя пользователя и некоторые другие данные из Twitter. У меня есть потребительский ключ и секрет потребителя. Я не уверен, как действовать дальше, и мои поисковые запросы Google пока не помогли.

Я пытаюсь с помощью codebird js:

$(function() {
    $('#twitter').click(function(e) {
        e.preventDefault();
        var cb = new Codebird;
        cb.setConsumerKey("redacted", "redacted");
        cb.__call(
            "oauth_requestToken",
            { oauth_callback: "http://127.0.0.1:49479/" },
            function (reply, rate, err) {
                if (err) {
                    console.log("error response or timeout exceeded" + err.error);
                }
                if (reply) {
                    // stores it
                    cb.setToken(reply.oauth_token, reply.oauth_token_secret);

                    // gets the authorize screen URL
                    cb.__call(
                        "oauth_authorize",
                        {},
                        function (auth_url) {
                            window.codebird_auth = window.open(auth_url);
                        }
                    );
                }
            }
        );
        cb.__call(
            "account_verifyCredentials",
            {},
            function(reply) {
                console.log(reply);
            }
        );                 
    })
});

Но я получаю

Ваши учетные данные не разрешают доступ к этому ресурсу

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

Ответ 1

Вы не можете вызвать cb._call( "account_verifyCredentials"....

В коде есть только токен запроса, а не токен доступа, который вы получите только после авторизации вашего приложения (в всплывающем окне Twitter).

Вы используете метод обратного вызова без PIN-кода, поскольку задокументирован в README. Таким образом, вам нужно реализовать этот пример кода на странице http://127.0.0.1:49479/.

Кроме того, это по существу требует, чтобы вы где-то хранили свои учетные данные. В моем примере ниже я использовал localStorage.

$(function () {
  $('#twitter').click(function (e) {
    e.preventDefault();
    var cb = new Codebird;
    cb.setConsumerKey("CeDhZjVa0d8W02gWuflPWQmmo", "YO4RI2UoinJ95sonHGnxtYt4XFtlAhIEyt89oJ8ZajClOyZhka");

    var oauth_token = localStorage.getItem("oauth_token");
    var oauth_token_secret = localStorage.getItem("oauth_token_secret");
    if (oauth_token && oauth_token_secret) {
      cb.setToken(oauth_token, oauth_token_secret);
    } else {
      cb.__call(
        "oauth_requestToken", {
          oauth_callback: "http://127.0.0.1:49479/"
        },
        function (reply, rate, err) {
          if (err) {
            console.log("error response or timeout exceeded" + err.error);
          }
          if (reply) {
            console.log("reply", reply)
              // stores it
            cb.setToken(reply.oauth_token, reply.oauth_token_secret);

            // save the token for the redirect (after user authorizes)
            // we'll want to compare these values 
            localStorage.setItem("oauth_token", reply.oauth_token);
            localStorage.setItem("oauth_token_secret", reply.oauth_token_secret);

            // gets the authorize screen URL
            cb.__call(
              "oauth_authorize", {},
              function (auth_url) {
                console.log("auth_url", auth_url);
                // JSFiddle doesn't open windows:
                // window.open(auth_url);
                $("#authorize").attr("href", auth_url);

                // after user authorizes, user will be redirected to
                // http://127.0.0.1:49479/?oauth_token=[some_token]&oauth_verifier=[some_verifier]
                // then follow this section for coding that page:
                // https://github.com/jublonet/codebird-js#authenticating-using-a-callback-url-without-pin
              });
          }
        });
    }
  })
});

Также сделан JSFiddle