开发者社区 问答 正文

Java或PHP中的跨设备OAuth2

这不是编码问题,因为我正在尝试从头开始做初步研究。

尽管目前有任何示例都将对您有所帮助,但我(现阶段)并未对编码有所帮助。

我正在寻找一些有关从何处开始编写软件以执行以下操作的提示和技巧:

AppA在DeviceA上运行,并希望使用OAuth2访问用户的Google Drive / DropBox。AppA是Qt / C ++应用, AppA向WebServer请求QR码。WebServer可以是PHP / Java Web应用程序。 WebServer响应QR码返回DeviceA上的AppA AppB在PhoneB上运行。AppB是Qt / C ++应用, 用户在PhoneB上拥有自己的Google / DropBox帐户。 PhoneB上的AppB扫描DeviceA上显示的QR码。 AppB向WebServer请求OAuth2令牌。 同时,DeviceA上的AppA会轮询WebServer以查找与其QR Code标签匹配的令牌。 WebServer将Appb / PnoneB的令牌与AppA / DeviceA的请求进行匹配,然后将该令牌发送到AppA。 AppA获取令牌,现在可以连接到Google云端硬盘。 我一直在阅读入门指南,但我不得不承认我对所有术语感到困惑。我想我想要的与WhatsApp网络的工作原理相似。

如果有人可以说明我需要的OAuth正确形式是什么,也许我可以从哪个库开始进行编码。

请注意,我宁愿避免使用像Spring这样的大型框架...如果可能的话,我宁愿进行最简单的实现。我总是在某个时候觉得Spring麻烦并且要避免,但是如果这只是实现这一目标的唯一方法,请告诉我。

展开
收起
垚tutu 2019-12-04 16:53:22 625 分享 版权
阿里云 AI 助理回答

根据您的描述,您希望实现一个跨设备的OAuth2认证流程,允许AppA(运行在DeviceA上的Qt/C++应用)通过PhoneB上的AppB(同样是Qt/C++应用)间接获取用户Google Drive或DropBox的访问权限。这里是一个简化的步骤指南和推荐库,帮助您开始这个项目:

1. 理解OAuth2流程

首先,确保您对OAuth2的基本概念有清晰的理解,特别是授权码流(Authorization Code Flow),因为这可能是最符合您场景的流程。在这个流程中,用户在PhoneB上授权后,AppB会获得一个临时的授权码,然后用它从WebServer换取最终的访问令牌。

2. 生成QR码

  • DeviceA上的AppA:可以使用QZXing库来生成和读取QR码。这是一个基于Qt的开源库,支持多种条形码和二维码格式。

  • WebServer:生成QR码时,需要包含足够的信息让AppB知道如何与WebServer通信以开始OAuth流程,并且能够关联到AppA的请求。这可能包括一个唯一的会话ID或者请求标识符。

3. OAuth2认证库

  • PhoneB上的AppB:为了简化OAuth2交互,您可以考虑使用轻量级的库。对于C++应用,虽然直接支持OAuth2的库不多,但您可以尝试将HTTP请求部分外包给如curlpp这样的库,然后手动实现OAuth2的逻辑。不过,如果PhoneB是Android或iOS设备,您可能会发现使用原生平台的SDK(如Google Sign-In SDK或Dropbox SDK)更方便。

  • WebServer:如果您决定使用PHP,可以考虑使用league/oauth2-client库来处理OAuth2客户端逻辑。Java方面,Spring Security OAuth是一个强大的选择,尽管您想避免大型框架,但也有其他轻量级选项,如scribejava,它提供了一个简单的API来与各种OAuth服务交互。

4. 轮询与通知机制

  • AppA轮询WebServer:可以通过定时发送HTTP请求检查特定会话的状态。简单起见,可以使用上述提到的HTTP库。

  • WebServer匹配并通知:当AppB完成授权并将令牌发送到WebServer时,WebServer需要保存该令牌,并将其与之前生成的唯一标识关联起来。一旦AppA查询,就返回相应的令牌。为减少延迟和资源消耗,也可以考虑引入WebSocket或长轮询等实时通信技术,但这会使实现复杂度增加。

5. 安全注意事项

确保在整个过程中正确处理敏感数据,比如使用HTTPS、不存储原始密码或访问令牌,并遵循最佳安全实践。

结论

虽然没有现成的代码示例,但以上建议应该能为您提供一个起点。记住,每个步骤都可能需要深入研究相关技术和文档。考虑到您希望避免大型框架,手动集成和定制将是关键。祝您的项目顺利!

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: