Я пытаюсь создать веб-приложение, которое использует RingCentral PHP SDK для подписки на события присутствия. Приложение будет использовать поток кода авторизации. Я получаю токен доступа, но не знаю, как использовать этот токен с объектами SDK и Platform. Похоже, SDK ориентирован на использование потока паролей.
Должен ли я использовать простой локон для вызова POST /restapi/v1.0/subscription HTTP/1.1
передать токен доступа в заголовок авторизации? Или есть способы использовать для этого объекты RingCentral SDK? Я что-то пропустил?
Если бы вы могли предоставить немного больше информации о вашем сценарии использования и о том, как вы реализуете код, я могу предоставить более подробную информацию.
Чтобы создать подписку с помощью PHP SDK, вот демонстрационный код, содержащийся в Репозиторий RingCentral PHP SDK на Github
TL; DR
Я вижу два вопроса:
Password Flow
?Поток авторизации — это лучший метод для создания мультитенантных приложений, поскольку он устраняет угрозу безопасности вашего приложения, хранящего имена пользователей и пароли, связанные с учетными записями RingCentral. RingCentral PHP SDK поддерживает типы авторизации потока авторизации и потока пароля. Как только ваш экземпляр PHP SDK имеет действительный
access_token
тогда он может создать подписку довольно легко.Мы можем видеть в PHP SDK код на Github внутри
src/Platform.php
эта константаAUTHORIZE_ENDPOINT
поддерживается как возвращаемое значение из запроса к authUrl ().Вы можете увидеть в Пример GroCify для RingCentral OAuth PHP тот
Authorization Flow
поддерживается PHP SDK.Как только ваш экземпляр SDK имеет действительный
access_token
, он будет использовать этот токен вAuthorization
заголовок при создании Subscription (), addListeners () и register (), как показано в этот PHP демо-код для создания подписки
Существует несколько способов использования RingCentral SDK. Я предоставил ссылку на демонстрацию PHP по созданию подписки в вышеуказанном TL; DR.
Поскольку вы работаете с RingCentral PHP SDK, тогда вы ограничены серверными реализациями, так как PHP — это серверный язык.
То, как вы решите реализовать свою подписку, полностью зависит от потребностей вашего приложения и ваших архитектурных требований. Поскольку вы указали, что используете Поток авторизации, это заставляет меня думать, что вы создаете многопользовательскую интеграцию веб-приложений. Так как вы сказали, что вы получаете
access_token
Я полагаю, вы назвали Platform.login () и передал это код значение, которое вы получаете от запроса аутентификации 3-Legged/restapi/oauth/authorize
и получил в редиректе. Я не уверен, что вы делаете все это с клиента или сервера, но я предполагаю, что сервер.
Вам нужно будет связать сеанс с экземпляром SDK и подпиской на стороне сервера. Это означает, что вам придется управлять несколькими экземплярами SDK и подписки для каждого сеанса на стороне клиента. Вам также может понадобиться реализовать WebSockets или Long-Polling, чтобы вы могли получать обновления событий почти в реальном времени, которые разрешены в Подписках. Так что пока да, RingCentral PHP SDK можно использовать с потоком авторизации, я лично я бы рекомендовал не использовать его для разработки приложений для конечных пользователей, на стороне клиента, для мультитенантных приложений (если только вы не подготовили должным образом для сопоставления сеансов с экземплярами SDK / Subscription, как я описал ранее.
Если вы не хотите управлять всем этим на стороне сервера, вы можете использовать RingCentral JS SDK на стороне клиента вашего PHP-приложения, но это может стать немного запутанным и потребовать некоторой ре-архитектуры вашего решения в зависимости от того, как у вас все устроено. Конечно, этот подход имеет изменчивый аспект в зависимости от того, что вы хотите сделать с данными, полученными из подписки, и от того, нужно ли вам их сохранять между сеансами (опять же, это зависит от вашего варианта использования).
Других решений пока нет …