iOS App接入Google登录实践

作者: 阿呆少爷 | 来源:发表于2017-05-03 20:50 被阅读389次

    接入Google登录非常简单直观,在Enable Google Services for your App注册一个App,然后把GoogleService-Info.plist下载下来,放到工程里面。接着设置工程的Bundle ID和URL Types。登录完成之后,Demo App会显示用户名。

    image.png

    接着分析一下登录流程。Google Signin会打开一个SFSafariViewController做登录。发出去的HTTP请求如下所示。

    image.png

    因为是Google账号,所以https://accounts.google.com/o/oauth2/v2/auth会重定向到https://accounts.google.com/signin/oauth,直接在浏览器中打开该链接,长下面这样。

    image.png

    登录完成之后,返回App的URL如下所示。

    com.googleusercontent.apps.24408797720-fi6tusi150146mfha93rh94n59ere7ab:/oauth2callback?code=4/653nbDRjmoLuloN3saMH2mw4Wf7NM01OHFHDB572hnM#
    

    SFSafariViewController送回来一个code,客户端拿到code之后要完成OAuth 2.0剩余的步骤。通过Charles抓包可以看到获取token的请求。

    image.png

    发出去的请求如下所示。Google做了一些封装,开发者并不需要自己去拼这个请求串。

    POST /oauth2/v4/token HTTP/1.1
    Host: www.googleapis.com
    Content-Type: application/x-www-form-urlencoded
    Connection: keep-alive
    Accept: */*
    User-Agent: gtm-oauth2 com.google.samples.quickstart.SignInExample/1.0.1
    Content-Length: 287
    Accept-Language: en-us
    Accept-Encoding: gzip, deflate
    
    client_id=24408797720-fi6tusi150146mfha93rh94n59ere7ab.apps.googleusercontent.com
    &code=4%2FJ7N898ozpAyQxarnOplLX8Yv6pSk194llqNwbxwtJ6U
    &grant_type=authorization_code
    &redirect_uri=com.googleusercontent.apps.24408797720-fi6tusi150146mfha93rh94n59ere7ab%3A%2Foauth2callback
    &verifier=70745093
    

    Google送回来access token、refresh token和id_token,这个id_token就比较有意思了。在 https://jwt.io 里面解码可以发现,里面都是用户的个人信息。对比一下iatexp,可以发现id_token的有效期是1493817867-1493814267=3600s,也就是一个小时。

    image.png

    Demo App上面还有一个Sign outDisconnect,我发现点击Sign out没有发出任何请求,大概只是在本地把数据删除掉了。如果点击Disconnect,那么会发出去一个revoke请求,如下图所示。

    image.png

    如果输入alice@secloud.xin这个微软账号,可以看到不会马上302跳转到Google OAuth服务处理了,需要先跳到微软的登录页面完成登录。

    image.png

    没看到SAML token在哪里,这块需要加强理解。

    image.png

    第三方登录完成之后,接下来就是走Google OAuth服务去拿相关的token,可以看到alice@secloud.xin相关的信息。

    image.png

    相关文章

      网友评论

        本文标题:iOS App接入Google登录实践

        本文链接:https://www.haomeiwen.com/subject/sajltxtx.html