zoukankan      html  css  js  c++  java
  • 详解新浪微博登录第三方网站

    为什么要绑定?

    答案:简化用户登录,用第三方账号实现这个网站的登录。通过绑定,还可以获得第三方账号的提供的一些接口信息,可以再本平台直接操作第三方平台,这样,即保存了本网站的用户也有利于第三方网站,实现双赢。当然最主要是的还是实现了不用注册登录

    第三方登录过后用户名是多少?

    用第三方登录后默认是没有用户名的,只能获得第三方提供的一个access_token来获取第三方平台的信息。所有绑定后,我们应该引导用户手动设置我们网站上的用的名,密码等基本信息,处理办法:

    1、引导手动设置用户名,密码

    2、为第三方网站登录后的用户设置一个随机的用户名,引导用户随后重新设置用户名。

    一、常识:

    什么是授权方式:授权方式即采用什么办法来使用户获得权限。

    新浪中的授权方式有哪些?

    1、OAuth方式

    2、XAuth方式,主要用于应用分类属于桌面客户端、手机客户端。(这里不讲解)

     参考:http://open.weibo.com/wiki/Authentication#HTTP.E6.99.AE.E9.80.9A.E9.89.B4.E6.9D.83.28Basic_Authentication.29.E6.96.B9.E5.BC.8F

    二、OAuth方式详解:

    code:授权码,用于获得Access token,获取后会变为无效(Code只允许使用一次,如获取token失败,请重新生成code,再进行授权)

    Access token (访问令牌)  用第三方登陆的凭证,通过它登录第三方获取信息,他不是固定不变得,是和用户选择的授权项有关,还有他有过期时间。

    Refresh_token(刷新令牌) 

    通过前两种种流程,获取了Access token以及Refresh token(对于具有"获取Refresh token权限"的应用),但是一般来讲,access token都有一定的失效,在刷新有效时长内必须通过Refresh token 来延迟Access token的时长。请求的流程有:https://auth.360buy.com/oauth/token通过http post请求发送刷新。

    access_token有设定的有效期,当应用需求的accesstoken有效期超过设定值时,就可以通过refreshtoken来刷新accesstoken.

    注意:新浪微博的Refresh Token 暂不开放。(参考:http://open.weibo.com/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98  第31条

     

    参考:http://help.jd.com/jos/question-594.html

    如何防止第三方授权之后的token被冒用?

    OAuth1.0的access token获取过来之后,就可以存到数据库里,然后长期使用,因为它有效期很长,通常有效期是无限的.

    但是OAuth2.0为了增强安全性,access token的有效期被大大缩短,通常只有几个小时,也可以申请增加到几十天,但是总是会有过期的时候.

    为此,OAuth2.0增加了一个refresh token的概念,这个token并不能用于请求api.它是用来在access token过期后刷新access token的一个标记.

    在OAuth1.0中用户的登录状态是一直存在的.

    在OAuth2.0中用户的登录状态需要通...

    关于人人网,QQ中的access token 过期时间的判断:

    用code去换取token的时候,会返回三个参数:现在的accesstoken的有效期是一个月,refreshtoken的有效期是两个 月,expirein是过期时间(生命期,从获得的时刻起的剩余有效时间,以秒为单位);第一次登陆的时候需要和用户的人人uid一起与网站uid关联起 来,还需要保存accesstoken的获取时间,以后调接口发新鲜事的时候先判断一下accesstoken是否过期,算法:现在的时间秒 数>accesstoken的获取时间+expirein(如果为true代表accesstoken已过期),

    如果accesstoken已过期,需要用refreshtoken刷新accesstoken,

    如果刷新没有取到accesstoken,代表refreshtoken也过期了,需要用户重新登陆一次人人网;

    如果刷新取到了新的accesstoken、refreshtoken、expirein,需要用这些新的去替换掉关联表中的数据

    建议在用户每次登陆的时候都用refreshtoken去刷新一次accesstoken,这样才会保证只有用户连续两个月没有登录才需要重新登录人人网;

    需要重新获取code,然后得到access_token。
    即要重新调用授权界面。需要用refreshtoken刷新accesstoken。
    如果刷新取到了新的accesstoken、refreshtoken、expirein,需要用这些新的去替换掉关联表中的数据。
    建议每次登陆的时候都用refreshtoken去刷新一次accesstoken。


    参考:http://www.cnblogs.com/hooray/archive/2012/11/17/2774499.html

    http://www.iteye.com/topic/1129210

  • 相关阅读:
    wget命令
    Linux常用命令大全
    centos7 中文乱码问题解决方法
    Linux软件安装的补充
    redis在Linux上的安装
    Linux下tomcat的安装
    Linux常见命令
    Linux下jdk安装过程
    JAVA中日期处理
    JAVA中File类的使用
  • 原文地址:https://www.cnblogs.com/Alight/p/3516710.html
Copyright © 2011-2022 走看看