Не удается прочитать свойство 'chromeExOAuthConfig' с нулевым значением в расширении Google Chrome - PullRequest
1 голос
/ 29 февраля 2012

Я разрабатываю расширение для Chrome, которое будет чирикать. Я использую Google oAuth учебник для этого.

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

Но он не отправляет меня в Twitter. Когда я вызываю этот метод авторизации. Я делаю это правильно?

Мне нужен указатель здесь. Я также скачал chrome_ex_oauth.html. Который будет называться обратным вызовом. Правильно?

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

 <script type="text/javascript" src="chrome_ex_oauthsimple.js"></script>
  <script type="text/javascript" src="chrome_ex_oauth.js"></script>  

 jQuery(function() {

            var oauth = ChromeExOAuth.initBackgroundPage({
                  'request_url': 'https://api.twitter.com/oauth/request_token',
                  'authorize_url': 'https://api.twitter.com/oauth/authorize',
                  'access_url': 'https://api.twitter.com/oauth/access_token',
                  'consumer_key': '---',
                  'consumer_secret': '---',
                  'scope': '',
                  'app_name': 'Tweet'
                });
            jQuery('#connect').click(function (){

                oauth.authorize(install);       
            });
        });

        function install() {
          alert('success')
        }

        function callback(resp, xhr) {
          // ... Process text response ...
        };  

Edit:

Мой oauth.authorize будет вызван. И страница перенаправления появляется. Но он застрял на «Перенаправление ...». Ошибка консоль показывает следующую ошибку.

Невозможно прочитать свойство 'chromeExOAuthConfig' с нулевым значением enter image description here

1 Ответ

1 голос
/ 01 марта 2012

Я нашел учебник Chrome OAuth действительно раздутым и непрямым. Я просто установил расширение, которое извлекает личные данные GitHub с помощью OAuth2.

Вот источник (не забудьте также взглянуть наjection.js и adapter.html - оба они не зависят от jQuery и необходимы).

Я, по сути, только что изменил решение , чтобы оно соответствовало моим потребностям.

Что происходит, это:

  1. Вы запрашиваете авторизацию с помощью идентификатора приложения.
  2. Twitter заставит пользователя войти в систему и авторизовать приложение.
  3. Twitter перенаправит вас к указанному параметру перенаправления, который был указан (если вы не хотите беспокоиться о своем расширении в зависимости от веб-страницы или сервера, я бы указал перенаправление на https://twitter.com/robots.txt, потому что ваше расширение полагается в твиттере, если твиттер не работает, это все равно не имеет значения, и эта страница robots.txt никуда не денется)
  4. Добавить скрипт содержимого для вставки в URL перенаправления. Попросите сценарий извлечь строку запроса, добавить ее в URL страницы адаптера и перенаправить на нее.
  5. На странице адаптера загрузите код доступа из строки запроса и отправьте в Twitter запрос с кодом доступа и секретом вашего приложения. Вы получите ответный звонок от Twitter, предоставляющий пользователям маркер доступа, если все было сделано правильно.
  6. Сохраните токен в локальном хранилище расширений, закройте страницу адаптера, и все в порядке

Теперь, когда откроется всплывающее окно, вы можете получить токен OAuth2 из локального хранилища для использования с API Twitter.

Подробнее о потоке OAuth2.

ОТВЕТЬТЕ НА ОБНОВЛЕНИЕ

Из того, что я вижу в вашей консоли, похоже, что фоновая страница не найдена. У вашего расширения есть фоновая страница? Если это так, и это только что добавлено, вы должны перезагрузить расширение, используя кнопку перезагрузки рядом с расширением в chrome: // extensions. Chrome очень требователен, когда вы изменяете вещи, объявленные в манифесте, и обычно требует перезагрузки. Но chrome.extensions.getBackgroundPage () является стандартным вызовом API, поэтому возвращаемое значение null является проблемой.

Вы изучили мое решение? Он работает очень хорошо, очень быстро, и страницу адаптера можно настроить для отображения прогресса загрузки для медленных соединений (пользователям нравится обратная связь). Это также не полагается на jQuery. Вы, вероятно, не заметите разницы, но загрузка библиотеки jQuery на страницу перенаправления сделает транзакцию более длительной, поскольку скрипт должен быть загружен.

...