Veneris
V2EX  ›  问与答

关于 OAuth 在移动端的一点疑惑

  •  
  •   Veneris · Mar 27, 2020 · 1289 views
    This topic created in 2262 days ago, the information mentioned may be changed or developed.

    用户在 app 点击授权后会跳转网页,在网页确认授权后会把 code 和 state 重定向到回调地址,这时候可以用 code 去调用接口获得 token 。 但是如果回调地址是服务器的话,app 端如何能得知服务器端已经拿到 token 了呢? (长链接?轮询?)

    服务器又如何将 token 下发到对应的客户端呢? (使用 state 作为唯一标识?但似乎很多 OAuth 压根不返回 state )

    当然也可以曲线救国,例如授权后重定向到 localhost,客户端拿到 code 再去请求服务器获取 token 。 (毕竟 secret 肯定要放在服务器端)

    但无论如何都比较丑陋...请问最合理,正确的实现方式是什么呢?

    感谢。

    3 replies    2020-03-27 21:44:47 +08:00
    welkinzh
        1
    welkinzh  
       Mar 27, 2020
    我之前和 app 端调试,redirect_uri 随便填的,就算回调的 uri 不通也无所谓,授权后的 uri 里是有 code 和 state 的。
    当然我不知道这种实现是否合理,想看看大家的做法。
    Veneris
        2
    Veneris  
    OP
       Mar 27, 2020
    @welkinzh 开发阶段当然没问题,问题是线上环境...
    chinvo
        3
    chinvo  
       Mar 27, 2020 via iPhone
    @welkinzh #1 用 urn:ietf:wg:oauth:2.0:oob 和 http://localhost 都可以,都是推荐方法。

    获取到的 token 发送给自己的服务端,在服务端完成换 token 操作

    或者 callback 直接是服务端,服务端获取到 token 之后跳到指定的 uri,app 从 uri 截取 token 或网页用 js bridge 传递给 app
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2830 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 04:28 · PVG 12:28 · LAX 21:28 · JFK 00:28
    ♥ Do have faith in what you're doing.