网站上接入了新浪微博登录,登录过程正常,但退出后再用新浪微博登录,直接就用上次登录过的账号登录了,是什么原因?
是不是在退出登录后要做什么处理?

解决方案 »

  1.   

    去你的weibo.com把登录状态的账号退出,然后再在你的应用上登录。
      

  2.   

    csdn.net  新浪微博登录也是这样的,那我要是想换一个新浪微博的账号登录要怎么办呢?
      

  3.   

    你拿到用户的access后就放到用户session里行了,不用去告诉新浪注销,你自己控制好会话生命期就行了。用户主动注销你把access给unset掉不就行了。
      

  4.   


    我擦, 刚试了一下csdn的新浪微博登录, 注销了再新浪微博登录直接就登录上了, 我擦.看了一下微博登录按钮是走http://passport.csdn.net/auth/sinat?from=http%3A%2F%2Fcommunity.csdn.net%2F, 也就是先经csdn, 然后csdn帮你重定向到微博登录, 而不是JS直接重定向,这就是因为CSDN要先在本地会话里验证一下用户的登录状态:Location: https://api.weibo.com/oauth2/authorize?client_id=2601122390&response_type=code&redirect_uri=http%3a%2f%2fpassport.csdn.net%2fauth%2fsinat%3ffrom%3dhttp%3a%2f%2fcommunity.csdn.net%2f这是典型的登录页面请求,client_id是第三方开发id,uri是重定向页面,可以看到接下来用户被定向到微博登录页面,但接着微博登录页面发现你他丫的最近登录过了,就直接不用你输密码了,把你重定向到redirect_uri,当然redirect_uri会拿着redirec_uri的GET参数code再去微博拿新的access key。神奇的地方是什么,微博也维护了自己的会话,它知道一个浏览器最近是否登陆过,如果登陆过则不需验证账号密码,直接将生成新的code和access,并将你重定向的redirect_uri?code=xxx,由redirect_uri拿着app key,app secret,code去拿该用户的新access。看样你必须向新浪提出注销请求,个人感觉是必须由用户浏览器向新浪提交注销(关系到新浪的会话),可以通过后台重定向用户到注销页面或者JS重定向。
      

  5.   

    一个很有帮助的BLOG:
    http://www.cnblogs.com/highend/archive/2012/07/06/oautn2_authorization_code.html
      

  6.   


    果然,在CSDN登录后,访问新浪的任意站点都已经是登录状态了,这就是Oauth2.0我们的浏览器内已经注入了新浪的SESSCOOKIE。