在没有服务器的情况下,应用程序如何代表用户访问OAuth服务(例如Dropbox)?

时间:2019-06-26 17:44:20

标签: android ios server oauth-2.0 client

就OAuth访问而言,仅作为客户端而不使用服务器来实现Dropbox或GoogleDrive或任何客户端的正确/推荐方法是什么?

许多提供程序(例如Dropbox)都不允许使用不是http / https的redirect_uri。在手机上,似乎Google(和Apple?)将不允许从操作系统的浏览器(为了用户方便)访问OAuth请求,这意味着应用程序从以下位置捕获授权代码(不涉及服务器)的唯一方法oauth通过告诉OS希望拦截这样的URI来拦截诸如“ http://localhost:9876/myapplication/”之类的URI。如果没有复杂/复杂的设置(需要this之类的服务器),则无法拦截http URI(操作系统会将其重定向到浏览器)。

还有一个问题,必须告诉服务提供商有关我的应用程序的信息,并检索客户ID /秘密,我必须在应用程序中对其进行硬编码。

有一种OAuth授予类型,我只需要获取用户的用户名和密码并将其直接发送到服务器即可。这似乎是阴暗的,并且可能不为用户所接受。

正确的方法是什么?我是否需要运行服务器/服务才能创建仅是这些服务的第三方门户的应用程序?

谢谢

1 个答案:

答案 0 :(得分:0)

一种解决方法(如@gbazilio的评论所建议)是通过在Web视图内调用oauth端点来手动实现身份验证。为了使其与服务提供商(例如google)(从网络视图阻止oauth)一起使用,是在将oauth请求中的user-agent标头设置为某些移动浏览器用户代理,然后一切正常。