Как использовать новый API хранилища данных Dropbox из расширения Chrome?

Я пытаюсь использовать новый API хранилища данных dropbox с моим расширением Chrome. При использовании, как указано в учебнике, авторизация завершится с ошибкой 400:

Invalid redirect_uri: "chrome-extension://anzbpdekhbhcbekwmfazaophjcaabshl/chrome_oauth_receiver.html". It must exactly match one of the redirect URIs you've pre-configured for your app (including the path)

Если я добавлю этот URL-адрес в свой профиль приложения на веб-сайте Dropbox, все будет работать нормально. Но «anzbpdekhbhcbekwmfazaophjcaabshl» — это уникальное для компьютера значение, оно будет разным для каждой установки расширения для каждого пользователя. Можно ли как-то исправить это, или API хранилища данных dropbox предназначен для использования на статических веб-сайтах, где известен URL-адрес перенаправления?

Обновление 1

Идентификатор расширения является случайным для ручной/непубличной установки расширения.

Обновление 2

Я нашел способ сделать идентификатор расширения постоянным: просто упакуйте его, сгенерируйте открытый ключ для закрытого ключа .pem и установите значение этого ключа в кодировке base-64 как «ключ» в манифесте.


person grigoryvp    schedule 10.10.2013    source источник
comment
Я думал, что идентификатор расширения (часть сразу после chrome-extension://) не зависит от пользователя или компьютера и остается неизменным везде, где установлено расширение Chrome. Я ошибаюсь?   -  person user94559    schedule 11.10.2013
comment
На самом деле идентификатор расширения присваивается Google при регистрации в интернет-магазине. Но если вы запускаете расширение вручную, оно генерируется динамически.   -  person grigoryvp    schedule 11.10.2013
comment
@smarx Вы были правы: я нашел способ сделать идентификатор постоянным. Пожалуйста, сделайте свой комментарий ответом, чтобы я мог его принять.   -  person grigoryvp    schedule 11.10.2013
comment
Не могли бы вы опубликовать дополнительную информацию об использовании API хранилища данных в расширении Chrome? У меня проблемы с его настройкой. Вы сказали, что нашли учебник?   -  person jeremywho    schedule 14.11.2013
comment
@jeremywho Я обнаружил, что могу сделать идентификатор приложения постоянным, добавив ключ в манифест. Это позволяет без проблем использовать API хранилища данных.   -  person grigoryvp    schedule 14.11.2013


Ответы (2)


Перемещение моего комментария к ответу (и подробности см. в обновлении вопроса):

Я думал, что идентификатор расширения (часть сразу после chrome-extension://) не зависит от пользователя или компьютера и остается неизменным везде, где установлено расширение Chrome.

person user94559    schedule 11.10.2013

Я успешно использую Datastore API из расширения Firefox. Хитрость заключается в том, чтобы прикрепить сценарии Dropbox к реальной веб-странице, а не к локальной странице. У меня есть пустая страница, размещенная на моем сервере, и расширение открывает эту страницу и прикрепляет необходимые сценарии. Оттуда он перенаправляет пользователя на страницу аутентификации Dropbox.

После того, как пользователь прошел аутентификацию, я открываю ту же страницу на вкладке «без головы», используя API-интерфейс page-worker. (Я не знаю, имеют ли расширения Chrome аналогичную функциональность)

URL-адрес перенаправления должен быть https, поэтому для его работы вам потребуется получить сертификат SSL.

person Francis McGrew    schedule 11.10.2013
comment
Это хорошая идея, но она не подходит для автономных расширений Chrome (API Dropbox можно использовать в автономном режиме). - person grigoryvp; 11.10.2013