Как пройти аутентификацию в одной учетной записи Skydrive и не запрашивать у пользователя учетные данные?

У меня есть клиент, который хотел бы использовать SkyDrive в качестве облачного хранилища для веб-сайта. Этот веб-сайт не будет запрашивать у пользователя сайта его учетную запись SkyDrive, чтобы показать ему свои файлы, а скорее владелец веб-сайта будет хранить некоторые файлы в SkyDrive и хотел бы поделиться ими с пользователями. зашел на его сайт. Мой вопрос: как я могу отправить учетные данные в SkyDrive API непосредственно из внутреннего PHP-кода веб-сайта?

Документация по API в Live Connect (http://msdn.microsoft.com/en-us/library/live/hh243647.aspx), по-видимому, сосредоточены на предоставлении пользователю формы входа в систему для отправки учетных данных пользователя в службу. Опять же, это не то, чего я хочу. Пользователю веб-сайта не нужно ничего делать, кроме как перейти на страницу, и он увидит файлы, зеркально отраженные из учетной записи SkyDrive. Учетные данные должны храниться на сервере и отправляться, когда пользователь запрашивает страницу.

Я задал подобный вопрос о Документах Google (Как мне подключиться к Google Calendar API без аутентификации oAuth?). Ответ на этот вопрос заключался в настройке временного сценария для получения токена обновления, который можно было бы использовать снова и снова для аутентификации. Я попробовал это, и это сработало. Однако я не уверен, как долго действует токен обновления и будет ли тот же метод работать с API SkyDrive.

Изменить: после дополнительных исследований документы Live Connect (http://msdn.microsoft.com/en-us/library/live/hh826540) скажите:

После того как пользователь дает согласие, Live Connect предоставляет вашему приложению специальный код или токен доступа, который позволяет вашему приложению работать с той частью информации пользователя, на которую он дал согласие. Как правило, этот токен доступа действует около часа. По истечении этого часа ваше приложение больше не сможет работать с информацией о пользователе — оно должно снова попросить пользователя пройти процесс входа и согласия. Чтобы обойти это, вы можете попросить пользователя дать согласие на использование области wl.offline_access. Это дает вашему приложению дополнительный код, называемый токеном обновления, который ваше приложение может использовать для получения нового токена доступа, когда он ему нужен — даже после выхода пользователя — обычно на срок до года. Однако пользователь может отозвать доступ к вашему приложению в любое время. Если пользователь решит отозвать согласие на ваше приложение, никакие соответствующие токены доступа или токены обновления не будут работать — ваше приложение должно попросить пользователя еще раз пройти процесс входа и получения согласия.

Итак, похоже, что токен обновления длится год. Это означает, что я мог бы настроить что-то, чтобы получить токен обновления, сохранить его и при каждом запросе страницы использовать токен обновления для получения токена доступа и отображения данных. Однако раз в год мне приходилось обновлять токен обновления для этого клиента и сохранять его. Звучит ли это правильно, и это лучший способ сделать это?


person Jon Hargett    schedule 31.08.2012    source источник
comment
Я думаю, что их как FB не так ли? Это просто продолжается и продолжается, если вы храните токен, он должен работать в течение длительного периода времени. Вам нужно будет показать пользователю его страницу входа хотя бы один раз, вы не можете сделать это неавторизованно, поэтому пример показывает вам это.   -  person Sammaye    schedule 01.09.2012
comment
@Sammaye, насколько я могу судить, он не хочет, чтобы посетитель должен был входить в систему SkyDrive, а входить в систему с одной учетной записью, которую настраивает владелец сайта, и перечислять файлы, связанные с этой учетной записью, для обмена файлами. Так что перечисляйте / делитесь файлами из учетной записи SkyDrive на своем сайте с его сайтом, предоставляющим учетные данные.   -  person Jonathan Kuhn    schedule 01.09.2012
comment
@JonathanKuhn Хм, да, это можно так прочитать, возможно, ему нужно уточнить   -  person Sammaye    schedule 01.09.2012
comment
Хотя вы можете добиться этого с помощью донга, это происходит при автоматическом обмене WP facebook. Основная учетная запись входит в систему, и все пользователи этого приложения могут затем использовать токен, поэтому вы просто используете токен, который вы получили при первоначальной настройке своего сайта, для входа пользователей в свою учетную запись, на мой взгляд, должно быть достаточно просто   -  person Sammaye    schedule 01.09.2012
comment
Да, @JonathanKuhn был прав. Я не хочу, чтобы посетитель сайта входил в систему со своими учетными данными. Я хочу войти один раз с учетными данными владельца веб-сайта. Если токен обновления действительно длится вечно, то я могу настроить что-то, чтобы получить токен обновления один раз, сохранить его, а затем просто использовать его с тех пор.   -  person Jon Hargett    schedule 01.09.2012


Ответы (1)


Именно для этого в OAuth 2 есть специальный поток, который называется Client. Предоставление учетных данных.

Google уже реализует это с помощью сервисных аккаунтов и клиентских сертификатов, как упоминалось в этом ответ на другой ваш вопрос.

Однако до сих пор Microsoft нет реализовать этот процесс, поэтому на данный момент лучше всего использовать обходной путь, который вы уже применяете для Документов Google.

person Jan Gerlinger    schedule 03.09.2012
comment
Спасибо за ответ. Похоже, что обходной путь — лучший вариант для SkyDrive. Однако, если срок действия токена обновления истечет, будет сложно повторить это, даже если это будет раз в год. - person Jon Hargett; 04.09.2012