使用okhttp的Authenticator界面

时间:2016-05-28 09:16:24

标签: android facebook google-oauth retrofit okhttp

当我在搜索如何处理来自API的401响应时,我遇到了https://github.com/square/okhttp/wiki/Recipes#handling-authentication。我发布这里是为了了解使用此界面处理Google / Facebook等第三方身份验证的最佳方法。根据示例,我们进行同步调用并从API服务器获取新令牌。但是,当用户通过G + / FB进行身份验证时,我们可能必须进行多次不同步的呼叫

此示例基于我对如何重新向您的应用验证Google用户的理解。我会调用GoogleSignInApi.silentSignIn(),这是一个异步调用来获取ServerAuthCode / IDtoken。这将被发送到我的API服务器进行验证,并将向我的Android应用程序提供新的令牌。如果用户已撤销Google的应用安全门户网站的权限,则必须致电意图以显示同意和接受页面。在用户接受后,我要么从谷歌获得一个新令牌,要么我需要取消令牌生成过程。同样的步骤也适用于FB

由于上述过程是异步的,如何在这种情况下使用Authenticator接口?

1 个答案:

答案 0 :(得分:0)

我建议将这些分成两个不同的流程

  1. 启动时验证令牌,并在需要时通过身份验证流程发送
  2. 使用拦截器,而不是身份验证器,因为它允许您在初始请求中设置令牌,而不是等待4xx响应。
  3. 我做了类似于我的桌面okhttp客户端项目的事情,例如

    1. https://github.com/yschimke/oksocial/blob/release/1.0.57/src/main/java/com/baulsupp/oksocial/services/facebook/FacebookAuthFlow.java
    2. https://github.com/yschimke/oksocial/blob/release/1.0.57/src/main/java/com/baulsupp/oksocial/services/facebook/FacebookAuthInterceptor.java