Я нашел учебник Chrome OAuth действительно раздутым и непрямым. Я просто установил расширение, которое извлекает личные данные GitHub с помощью OAuth2.
Вот источник (не забудьте также взглянуть наjection.js и adapter.html - оба они не зависят от jQuery и необходимы).
Я, по сути, только что изменил решение , чтобы оно соответствовало моим потребностям.
Что происходит, это:
- Вы запрашиваете авторизацию с помощью идентификатора приложения.
- Twitter заставит пользователя войти в систему и авторизовать приложение.
- Twitter перенаправит вас к указанному параметру перенаправления, который был указан (если вы не хотите беспокоиться о своем расширении в зависимости от веб-страницы или сервера, я бы указал перенаправление на https://twitter.com/robots.txt, потому что ваше расширение полагается в твиттере, если твиттер не работает, это все равно не имеет значения, и эта страница robots.txt никуда не денется)
- Добавить скрипт содержимого для вставки в URL перенаправления. Попросите сценарий извлечь строку запроса, добавить ее в URL страницы адаптера и перенаправить на нее.
- На странице адаптера загрузите код доступа из строки запроса и отправьте в Twitter запрос с кодом доступа и секретом вашего приложения. Вы получите ответный звонок от Twitter, предоставляющий пользователям маркер доступа, если все было сделано правильно.
- Сохраните токен в локальном хранилище расширений, закройте страницу адаптера, и все в порядке
Теперь, когда откроется всплывающее окно, вы можете получить токен OAuth2 из локального хранилища для использования с API Twitter.
Подробнее о потоке OAuth2.
ОТВЕТЬТЕ НА ОБНОВЛЕНИЕ
Из того, что я вижу в вашей консоли, похоже, что фоновая страница не найдена. У вашего расширения есть фоновая страница? Если это так, и это только что добавлено, вы должны перезагрузить расширение, используя кнопку перезагрузки рядом с расширением в chrome: // extensions. Chrome очень требователен, когда вы изменяете вещи, объявленные в манифесте, и обычно требует перезагрузки. Но chrome.extensions.getBackgroundPage () является стандартным вызовом API, поэтому возвращаемое значение null является проблемой.
Вы изучили мое решение? Он работает очень хорошо, очень быстро, и страницу адаптера можно настроить для отображения прогресса загрузки для медленных соединений (пользователям нравится обратная связь). Это также не полагается на jQuery. Вы, вероятно, не заметите разницы, но загрузка библиотеки jQuery на страницу перенаправления сделает транзакцию более длительной, поскольку скрипт должен быть загружен.