试图了解 OAuth 2.0。我正在使用 PhoneGap Build 和 JQM 构建一个跨平台的谷歌驱动应用程序。
我能够在 iOS 和 Android 上正确格式化请求 URL。它使用 InAppBrowser(也尝试过子浏览器)提示用户输入 ID/PW。下一个用户会在网页上使用蓝色按钮提示“允许访问”,就像在其他谷歌网站/应用程序上一样。在 Android 上一切正常,用户点击允许访问,回调找到成功代码,我可以获取令牌。在 iOS 上,我在 InAppBrowser 的状态栏中收到“加载错误”消息,但我无法捕获错误以查看它是什么。似乎重定向参数在调用 startLoad 或 endLoad 事件以捕获来自 Google 的响应中的成功/失败之前中断了事情。
使用 oauth2-playground 我的 URL 看起来是正确的,就像我说的它在 Android 上运行良好。
任何人都知道我需要查看关于 iOS 的哪些差异?在这里被难住了几天。非常感谢任何和所有帮助。
我尝试重定向回 http//localhost 和 http//localhost/afterOauth.html,其中 afterOauth.html 是应用程序中的一个页面,用于为重定向提供调用 startLoad/endLoad 事件的内容。
更新:我真的认为问题与我给原始 Google 请求的重定向有关。如果我将“localhost”更改为 urn:ietf:wg:oauth:2.0:oob,这会显示在 google 文档中,Android 和 iOS 的行为都相同。他们将我带到一个页面,上面写着“请复制此代码,切换到您的应用程序并将其粘贴到那里”,下面的 code=4/MyCode。
另外,我添加了一个 loaderror 回调。它不会在 Android 上触发,但在 iOS 上会给出错误代码 -1004 和错误消息:无法连接到服务器。然而,在这个 loaderror 的 event.url 中,它清楚地显示了 code=4/myCode。iOS和Google之间成功的OAuth这里缺少什么链接?