zoukankan      html  css  js  c++  java
  • QQ互联账号登录

    本文说明的是依据某应用通过网页的qq信息来登录的过程。用途是利用QQ账号就能高速自己主动注冊并可以登录客户应用。

    从webserver与腾讯server通信获取开房平台用户OpenID,再在应用server的平台server生成账号,在命名server生成角色ID。在Tokenserver生成Token,然后返回client。

    client能够依据角色ID和Token请求登录。

    1、客户应用的标识

    在腾讯开放平台站点申请腾讯应用,批准之后可获得的客户应用的标识id:

    如client_id、oauth_consumer_key的值都是应用的id(101222571)。

    腾讯验证server的地址:https://graph.qq.com/oauth2.0/authorize?

    应用webserver提供给腾讯server的回调地址(redirect_uri ):比方 http://www.kkalk.cn

    2、webserver与腾讯server通信

    (1)申请客户应用的用户的訪问令牌

    申请客户应用的訪问令牌access_token

    https://graph.qq.com/oauth2.0/authorize?

    response_type=token&client_id=101222571&redirect_uri=http://www.kkalk.cn


    腾讯校验成功后会调用应用webserver的回调地址,地址里面包括client的訪问令牌access_token
    http://www.kkalk.cn/?

    #access_token=4EB4F7CFD29AFB216FED819042D1B6F5&expires_in=7776000

    当中:

    通过用户验证登录和授权,获取Access Token。为下一步获取用户的OpenID做准备;
    同一时候。Access Token是应用在调用OpenAPI訪问和改动用户数据时必须传入的參数。


    access token由每次用户登录时生成。过期时间默觉得三个月,用户再次登录时自己主动刷新,请站点或应用做好防过期策略,或过期后提示用户再次授权。


    (2)申请用户的openid

    依据用户的access_token 申请用户的openid(腾讯server依据client应用为每一个用户提供一个唯一id,是一个32字节16进制字符串)

    https://graph.qq.com/oauth2.0/me?

    access_token=8F14187F81C3AA4160328873807A4F71

    腾讯校验成功后,返回openid,openid为用户的分配唯一标识,以后不会改变
    callback( {"client_id":"101222571","openid":"6A7F7C7C5F9D9FF02F41BAE31838C315"} ); 

    当中:

    通过输入在上一步获取的Access Token。得到相应用户身份的OpenID。


    OpenID是此站点上或应用中唯一相应用户身份的标识,站点或应用可将此ID进行存储,便于用户下次登录时辨识其身份。或将其与用户在站点上或应用中的原有账号进行绑定。


    (3)获取腾讯用户信息

    客户应用依据该用户的access_token,openid 能够获取腾讯用户的信息

    https://graph.qq.com/user/get_user_info?access_token=8F14187F81C3AA4160328873807A4F71&oauth_consumer_key=101222571&openid=6A7F7C7C5F9D9FF02F41BAE31838C315


    腾讯校验成功后,返回用户信息,比如:

    { "ret": 0, "msg": "", "is_lost":0, "nickname": "云", "gender": "男", "province": "上海", "city": "闵行", "year": "1987", "figureurl": "http://qzapp.qlogo.cn/qzapp/101222571/6A7F7C7C5F9D9FF02F41BAE31838C315/30", "figureurl_1": "http://qzapp.qlogo.cn/qzapp/101222571/6A7F7C7C5F9D9FF02F41BAE31838C315/50", "figureurl_2": "http://qzapp.qlogo.cn/qzapp/101222571/6A7F7C7C5F9D9FF02F41BAE31838C315/100", "figureurl_qq_1": "http://q.qlogo.cn/qqapp/101222571/6A7F7C7C5F9D9FF02F41BAE31838C315/40", "figureurl_qq_2": "http://q.qlogo.cn/qqapp/101222571/6A7F7C7C5F9D9FF02F41BAE31838C315/100", "is_yellow_vip": "0", "vip": "0", "yellow_vip_level": "0", "level": "0", "is_yellow_year_vip": "0" } 


    3、客户应用webserver与平台server、以及浏览器前端通信

    client应用须要依据互联账号OpenID生成客户应用账号以其唯一ID

    (1)返回客户应用的互联账户

    客户应用的webserver发送用户OpenID到平台server。账户命名为 _qq互联账号OpenID。检查该账户是否存在。不存在则生成。存在则返回该账户的登录信息到webserver,进而返回给浏览器前端

    (2)客户应用的互联账户的生成

    平台server生成账号,并向命名server请求角色ID(没有则生成),再向Tokenserver请求登录Token(没有则生成),然后连同登录信息返回web server以及浏览器前端。

    client检查到浏览器返回。则回调显示角色ID和登录Token。


    4、client账号登录

    client依据角色ID以及登录Token请求登录,然后開始登录。參考  http://blog.csdn.net/chenjiayi_yun/article/details/46804369 (请求记password登陆)




  • 相关阅读:
    [GoogleAppEngine]编译问题-locale zh_CN
    [Android]Webview中JS接口调用Java-版本问题
    [HTTP基础]3. HTTP链接
    [WebView]简单总结
    [HTTP基础]1.网络开发必备的HTTP协议知识
    [HTTP基础]2.Http和Socket区别
    [HTTP]Android抓包方法(Wireshark)
    [Android]Process&Thread-基本原理
    [Android]Thread两种实现方法
    [Android]消息队列模型——Thread,Handler,Looper,Massage Queue
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7008250.html
Copyright © 2011-2022 走看看