android – Uber OAuth移动应用程序的最佳实践

我想制作一个代表用户提出请求的移动应用.我了解以下OAuth流程:

>在Web视图中打开用户,以便我的应用程序可以代表他们发出请求
>当他们访问授权访问权限时,我的服务器端应用程序将接收带有授权代码的呼叫
>然后,我的服务器端应用程序需要交换访问令牌的授权码

我的困惑从第2步开始.优步使用授权代码向我的端点发出请求,但我无法知道该授权属于哪个用户.我可以将其替换为访问令牌并将其存储在数据库中30天,但我无法将其返回给用户用于发出请求.

一个想法是我可以让用户使用电子邮件地址登录我的应用程序,然后我可以将其用作从我的服务器应用程序获取相应访问令牌的密钥,但我无法将访问令牌与电子邮件地址相关联在我的数据库表中首先.

我想知道这里的最佳做法是什么.我的移动应用程序应该如何知道给定用户使用哪种访问令牌?

(我直接联系了Uber API支持,但是他们让我打开一个StackOverflow问题)

最佳答案 显然,这是一个广泛的问题,并且高度依赖于您正在构建的应用程序类型,您希望用户流程看起来是什么样的等等,但我会尽力指出您正确的方向.

首先,Uber API具有/ v1 / me端点,该端点将返回用户的名字,姓氏和电子邮件地址等.因此,一个可能的流程是用户打开您的应用程序,然后他们完成整个OAuth流程,一旦您交换访问令牌的授权代码,您立即使用它(从服务器)来调用/ v1 / me端点然后使用用户电子邮件地址或UUID作为数据库中的密钥.如果您使用了电子邮件地址,则可以允许用户使用相同的电子邮件地址登录您的应用,并允许帐户创建过程成为OAuth流程.

我不是移动开发人员,但我对嵌入式Web视图的理解是,他们可以像使用任何其他浏览器一样使用cookie.在这种情况下,您可以使用的另一件事是会话/ cookie.假设您的现有用户有某种标识符,您可以将其添加为Web服务器的cookie,然后当您的用户使用授权代码重定向到您的Web服务器时,附加的cookie将告诉您关联哪个用户访问令牌.

最后,优步开发者平台在OAuth流的授权阶段包含一个状态参数,如此处所示https://developer.uber.com/docs/authentication您可以执行类似于我在上一段中描述的操作,除了使用cookie之外,您可以将用户标识符存储在状态中参数,当用户重定向时,它将被发送回给你.您可以使用该信息将访问令牌绑定回数据库中的特定用户.

我希望有所帮助!如果你仍然感到困惑,请不要犹豫.

干杯!

点赞