`
wangjie2013
  • 浏览: 172736 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

新浪微博登录

阅读更多

     last modified:2013-10-08 13:38:41

     *********************************************

 

开发之前的准备:

开发应用的第一步是在这里申请AppKey,开放平台使用AppKey确定是哪个应用在请求API调用,所以请开发者申请了AppKey以后妥善保管AppKeyApp Secret(有了AppKey,我们就可以访问开放平台里的数据了)。 具体流程请参考:应用开发流程

 

 第三方登录流程:

 

         简单来说就是访问连接:

 

https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI

 

其中:client_id:你申请的appKey

 

           redirect_uri:你的回调url

 

以上是两个主要的参数,也可以带上state(用于验证),scope(确定授权的的范围,通常为all)等。

 

         访问以上连接后就会进入微博登录的引导页。在输入用户名和密码并登录成功后;浏览器就会重定向到你起初设定的redirect_uri,并携带一个参数,参数的namecode

 

         形如:http://www.xxx.com/loginBySina?code=xxxxxxxxxxxxxx

 

         获得了新浪返回的code值,我们就可以通过code获取AccessToken,通过AccessToken和新浪提供的接口,就可以访问该登录用户的信息了。

 

         流程图:http://www.sinaimg.cn/blog/developer/wiki/oAuth2_02.gif

 

         更多内容可以查看:

 http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E

 

        

 

使用java SDK进行开发:

 

         各种版本的SDK下载:http://open.weibo.com/wiki/SDK

 

         我们选用java SDK完成一个简单的新浪微博第三方登录:

 

         1,下载java SDK,下载以后是一个java工程,我们可以打成一个jar以供我们的项目使用,下面有我提供的jar以供下载

 

         2,在项目的src目录下添加配置文件:config.properties

 

# sina weibo login configuration
# Last Modify : 2013-09-29 10:03:34
client_ID = xxxxxxxxx
client_SERCRET = xxxxxxxxxxxxxxxxxx
#下面填写你自己的回调URL
redirect_URI = http://www.xxxxx.com/login/loginBySinaWeibo.do

baseURL=https://api.weibo.com/2/
accessTokenURL=https://api.weibo.com/oauth2/access_token
authorizeURL=https://api.weibo.com/oauth2/authorize
rmURL=https://rm.api.weibo.com/2/

     3,获取code值:你可以在页面直接拼接相应的访问URL,也可以通过访问后台资源返回。

 

 

             A, 通过访问后台资源返回:当客户端发送微博登陆的请求(/sinaWeibo)时,后台处理代码:

 

        @RequestMapping(value = "/sinaWeibo")
	@ResponseBody
	public String sinaWeibo() {
		String authorizationUrl = "";
		try {
			authorizationUrl = new Oauth().authorize("code", null, "all");
		} catch (WeiboException e) {
			log.error("获取sina微博code值失败!exception:{}", e.getMessage());
			e.printStackTrace();
		}
		return authorizationUrl;
	}

       通过ajax发送请求,返回authorizationUrl(新浪的登录引导页的URL),以上使用的是springMVC

通过js打开authorizationUrl就能进入引导页面:

<script type="text/javascript">
		$(function(){
			$("#sinaWeiboLogin").click(function(){
				$.getJSON(
                               "${pageContext.request.contextPath}/login/sinaWeibo.do",
                                function(data){
				     window.location.href = data;
				});
			 });
		});
</script>

             B, 如果在页面直接拼接,只要符合这样的格式就可以:

   //请求

       https://api.weibo.com/oauth2/authorize?client_id=123050457758183&redirect_uri=http://www.example.com/response&response_type=code

 

//同意授权后会重定向

      http://www.example.com/response&code=CODE

 

4,获取AccessToken值:

 

         我的回调URI是:/login/loginBySinaWeibo.do;所以登录成功后会访问它。当访问该资源时,执行以下代码可以获取到AccessToken

 

Oauth oauth = new Oauth();
	AccessToken accessTokenObj = oauth.getAccessTokenByCode(code);
	String accessToken = accessTokenObj.getAccessToken();
	

      5,获取用户当前登录用户的信息:

 

 

        //A,获取当前用户的uid:
	Account am = new Account();
	am.client.setToken(accessToken);
	JSONObject uidObj = am.getUid();
	String uid = uidObj.getString("uid");

	//B,获取当前用户信息:
	Users um = new Users();
	um.client.setToken(accessToken);
	User weiboUser = um.showUserById(uid);

	//C,以上weiboUser封装了当前用户的用户信息,例如:
	String gender = weiboUser.getGender();//获取性别
	String avatarLarge = weiboUser.getavatarLarge();//获取新浪微博头像
	String screenName = weiboUser.getScreenName();//获取新浪微博的微博名称
	//具体可以看一下SDK中User的源码,里面有注释。

 

好了以上就可以获得用户在新浪的用户信息,一般用于web网站的快速注册功能,免去了用户重复填用户信息表单的时间,由web服务器自动从新浪微博服务器获取。

 

注意:

1,回调URL必须是你在新浪申请的网站域名下的URL,因为新浪对回调URL做了过滤,如果不是你在新浪开发者中申请的域名下的URL,新浪会提示URL匹配错误。

 

2,如果是在开发阶段,可以通过修改本地的hosts文件,将申请的域名指向本机就可以了。

Hosts文件中加一句:

 127.0.0.1  www.example.com 

这样该以后你的回调URL也得改一下:

www.example.com/(你的web工程名称)/login/loginBySinaWeibo.do

这样就不用将程序发布到线上也可以在本地测试了。

 

3,用户授权后出现applications over the unaudited use restrictions错误,原因:未审核应用只有应用创建者和测试用户能调用接口。

测试用户添加办法:

登录开发者帐号,点击进入 http://open.weibo.com/apps/308710000/info/advanced (308710000替换成你应用的AppKey),在底部添加测试用户即可,最多只能添加15位且添加后不能修改。注意:修改后约半小时左右时间生效

 

4,关于新浪提供的API大家可以参看javaSDK中的examples文件夹,里面的例子一看就明白了!

 

 

 

1
4
分享到:
评论
12 楼 hoversong 2013-10-28  
wangjie2013 写道
hoversong 写道
请问您做第三方登录的时候是怎么实现退出后跳转到另一个页面的?

对了你上次遇到的问题解决了吗,怎么解决的分享一下呀?如果你想退出微博登录后跳转到另外一个页面,你可以判断ajax返回的data是不是"result":"true",如果是true,你就用location.href = 'www.xxx.com'来跳转。


暂时在后台的退出action中进行处理,判断如果是第三方用户时,通过httpclient调用https://api.weibo.com/oauth2/revokeoauth2 ,然后再跳转到登陆页面
11 楼 hoversong 2013-10-28  
wangjie2013 写道
hoversong 写道
请问您做第三方登录的时候是怎么实现退出后跳转到另一个页面的?

对了你上次遇到的问题解决了吗,怎么解决的分享一下呀?如果你想退出微博登录后跳转到另外一个页面,你可以判断ajax返回的data是不是"result":"true",如果是true,你就用location.href = 'www.xxx.com'来跳转。

没解决,还是alert不出,但授权是收回了,就是没有alert,我换成$.ajax,
$.ajax({
                    type: "POST", //
                    dataType: "json", //数据格式:JSON
                    url: 'https://api.weibo.com/oauth2/revokeoauth2', //目标地址
                    data: "access_token=${AccessToken}",
                    error: function (XMLHttpRequest, textStatus, errorThrown) {alert('错误'); },
                    success: function (msg){
                    alert(msg.result);
                    }
                });
总是会执行error函数
10 楼 wangjie2013 2013-10-28  
hoversong 写道
请问您做第三方登录的时候是怎么实现退出后跳转到另一个页面的?

对了你上次遇到的问题解决了吗,怎么解决的分享一下呀?如果你想退出微博登录后跳转到另外一个页面,你可以判断ajax返回的data是不是"result":"true",如果是true,你就用location.href = 'www.xxx.com'来跳转。
9 楼 hoversong 2013-10-28  
请问您做第三方登录的时候是怎么实现退出后跳转到另一个页面的?
8 楼 wangjie2013 2013-10-25  
hoversong 写道
请问 第三方登录成功后登出该如何实现,我在页面写了$.post('https://api.weibo.com/oauth2/revokeoauth2?access_token=${AccessToken}',{},function(req){
alert(req);
},'json');但点击后没有没有弹出alert,而实际上却收回了授权了,我想在收回授权后跳到另一个页面,

没有弹出窗口吗?你写的没有错呀,要不是换成get请求试一试
7 楼 hoversong 2013-10-25  
请问 第三方登录成功后登出该如何实现,我在页面写了$.post('https://api.weibo.com/oauth2/revokeoauth2?access_token=${AccessToken}',{},function(req){
alert(req);
},'json');但点击后没有没有弹出alert,而实际上却收回了授权了,我想在收回授权后跳到另一个页面,
6 楼 hoversong 2013-10-14  
个人觉得 新浪微博的第三方验证比qq的好,尤其是在申请key方面,微博申请网站域名可以随便写,然后在hosts中写上映射就可以了,但qq的还需要在外网验证域名可访问。这对于没有个人网页的开发者来说有点强求。尤其是处于测试阶段,不知道是不是这种情况,还是我理解错误。
5 楼 hoversong 2013-10-12  
终于成功了,感谢感谢
4 楼 wangjie2013 2013-10-09  
hoversong 写道
wangjie2013 写道

你的回调URL是redirect_uri=http://www.hoversong.com/contentManager/index.jsp
按照你的说法你已经成功进入了新浪引导页面,在用户通过输入用户名和密码后,就会跳转到http://www.hoversong.com/contentManager/index.jsp?code=***************
如果你已经从新浪获取到用户信息并注册到了数据库中,那么再执行一次登录流程就可以了

是的,跳转到http://www.hoversong.com/contentManager/index.jsp?code=***************  后又提示没有登录,另外,第三方登录还需要把用户信息注册到数据库?

你的情况我大概了解了,其实第三方登录就是省去了用户在登录你网站时填写一些个人信息的时间,通过新浪提供的接口在用户成功登录新浪以后我们可以通过返回的code值获取到AccessToken,然后通过AccessToken获取用户个人信息注册为本站用户,然后就可以调用你原来的登录接口完成登录功能。说白了,这些步骤都是在你的回调URL那个请求里面做的。。。。你再看看我的文章介绍吧。。。。
3 楼 hoversong 2013-10-09  
wangjie2013 写道

你的回调URL是redirect_uri=http://www.hoversong.com/contentManager/index.jsp
按照你的说法你已经成功进入了新浪引导页面,在用户通过输入用户名和密码后,就会跳转到http://www.hoversong.com/contentManager/index.jsp?code=***************
如果你已经从新浪获取到用户信息并注册到了数据库中,那么再执行一次登录流程就可以了

是的,跳转到http://www.hoversong.com/contentManager/index.jsp?code=***************  后又提示没有登录,另外,第三方登录还需要把用户信息注册到数据库?
2 楼 wangjie2013 2013-10-08  
hoversong 写道
您好,我项目中集成了spring security3,在登录成功后会跳到index.jsp页面,我在首页点击“用微博登录”图片后,会跳到授权页面,但在授权页面点击授权有提示没有登录,需要重新登录。
另 “用微博登录”图片链接 是 <a href="https://api.weibo.com/oauth2/authorize?client_id=*********&response_type=code&redirect_uri=http://www.hoversong.com/contentManager/index.jsp"><img src="images/weibo_loginbtn_03.png"/></a>
       

你的回调URL是redirect_uri=http://www.hoversong.com/contentManager/index.jsp
按照你的说法你已经成功进入了新浪引导页面,在用户通过输入用户名和密码后,就会跳转到http://www.hoversong.com/contentManager/index.jsp?code=***************
如果你已经从新浪获取到用户信息并注册到了数据库中,那么再执行一次登录流程就可以了
1 楼 hoversong 2013-10-08  
您好,我项目中集成了spring security3,在登录成功后会跳到index.jsp页面,我在首页点击“用微博登录”图片后,会跳到授权页面,但在授权页面点击授权有提示没有登录,需要重新登录。
另 “用微博登录”图片链接 是 <a href="https://api.weibo.com/oauth2/authorize?client_id=*********&response_type=code&redirect_uri=http://www.hoversong.com/contentManager/index.jsp"><img src="images/weibo_loginbtn_03.png"/></a>
       

相关推荐

    新浪微博登录 sina

    标题“新浪微博登录 sina”指的是关于如何使用新浪开放平台的OAuth协议进行微博登录的教程或代码示例。在互联网开发中,OAuth是一种授权框架,允许第三方应用在用户授权的情况下,访问其存储在另一服务提供者上的...

    科讯CMS v8新浪微博登录插件 v1.1.rar

    这是一款用于快速登录科讯cms v8的新浪微博登录插件,安装简单、使用方便。 科讯v8新浪微博登录插件 v 1.1版更新: 此版修复注册名重复返回时,程序错误bug 科讯v8新浪微博登录插件安装: 第一次安装先运行...

    新浪微博登录网站

    标题“新浪微博登录网站”指的是利用新浪开放平台提供的API接口实现用户在个人网站上通过微博账号进行登录的功能。在这个过程中,开发者需要对微博的OAuth 2.0授权协议有深入理解,以便安全、有效地获取用户的授权...

    新浪微博登录插件For Discuz x2.5

    《新浪微博登录插件For Discuz x2.5详解与安装指南》 在互联网社区平台的运营中,提供便捷的第三方登录方式是吸引用户并提升用户体验的重要手段之一。Discuz! x2.5作为一款广泛使用的论坛系统,其用户群体庞大,而...

    整合新浪微博登录接口 C# .net源码 免费

    整合新浪微博登录接口 C# 源码 运行平台:Visual Studio 2010 (framework 4.0) 新浪微博登录整合开放平台申请地址:http://open.weibo.com/ 实例:贝芭芭 www.bei88.com 本程序由贝芭芭 www.bei88.com 提供

    新浪微博登录易语言源码

    【标题】:“新浪微博登录易语言源码” 这个标题指出我们关注的是一个使用易语言编写的程序,其功能是实现对新浪微博的登录。易语言是一种中国本土开发的编程语言,旨在降低编程难度,让非专业程序员也能进行软件...

    discuz X2.5 新浪微博登录插件

    X2.5 新浪微博登录插件详解》 Discuz! X2.5 是一款广泛使用的社区论坛软件,它为用户提供了一个高效、稳定的交流平台。为了更好地满足用户需求,Discuz! 推出了与新浪微博集成的登录插件,让用户能够使用其在新浪...

    科汛CMS v8新浪微博登录插件 v1.1

    这是一款用于快速登录科讯cms v8的新浪微博登录插件,安装简单、使用方便。科讯v8新浪微博登录插件 v 1.1版更新:此版修复注册名重复返回时,程序错误bug科讯v8新浪微博登录插件安装: 第一次安装先运行根目录下的...

    ECSHOP 新浪微博登录

    在ECSHOP中集成新浪微博登录功能,能够为用户提供便捷的社交账号登录体验,增加网站的用户友好性和互动性。以下将详细介绍ECSHOP如何实现新浪微博登录以及涉及的相关知识点。 1. **OAuth2.0授权框架**: 微博开放...

    科讯CMSv8新浪微博登录插件系统v1.1

    这是一款用于快速登录科讯cms v8的新浪微博登录插件,安装简单、使用方便。 科讯v8新浪微博登录插件 v 1.1版更新: 此版修复注册名重复返回时,程序错误bug 科讯v8新浪微博登录插件安装: 第一次安装先运行根目录下...

    网钛ASP版QQ登录与新浪微博登录插件 V1.0.rar

    ●如使用新浪微博登录,请修改deal.asp文件第47、48行App Key、App Secret值改成自己的,以确保可以正常使用新浪微博登录。 【新浪微博登录API申请网址:http://open.weibo.com/】 (新浪微博API如未通过审核,会...

    新浪微博登录织梦cms

    标题“新浪微博登录织梦cms”涉及的技术点主要集中在两个方面:一是织梦CMS(DedeCMS)的二次开发,二是社交媒体API的集成,特别是与新浪微博的API对接。下面将详细阐述这两个关键领域的知识。 织梦CMS(DedeCMS)...

    新浪微博登录接口DLL

    《新浪微博登录接口DLL详解及其应用》 随着社交媒体的飞速发展,新浪微博作为中国最具影响力的社交平台之一,其开放的API接口成为了开发者们构建各种应用程序的重要工具。本文将深入探讨“新浪微博登录接口DLL”,...

    网钛ASP版QQ登录与新浪微博登录插件 v1.0.rar

    ●如使用新浪微博登录,请修改deal.asp文件第47、48行App Key、App Secret值改成自己的,以确保可以正常使用新浪微博登录。 【新浪微博登录API申请网址:http://open.weibo.com/】 (新浪微博API如未通过审核,会有...

    OAUTH1.0腾讯登录与新浪微博登录

    在这个主题中,我们将深入理解OAuth 1.0在腾讯和新浪微博登录中的应用,以及如何使用Java进行实现。 OAuth 1.0的核心概念包括三个主要角色:资源所有者(用户)、客户端(第三方应用)和认证服务器(腾讯或新浪微博...

    新浪微博登录集成

    新浪微博登录集成Demo ......................................................................................................................................................................................

    ecms7.0新浪微博登录接口GBK/UTF-8版

    这里提到的"ecms7.0新浪微博登录接口GBK/UTF-8版"是针对帝国CMS(Empire CMS)7.0版本设计的一个组件,它允许用户通过其新浪微博账号进行登录。让我们深入了解一下这个接口以及相关技术要点。 首先,帝国CMS...

    sina新浪微博登录JAVA版SDK

    《使用JAVA实现SINA新浪微博登录的SDK详解》 在当今的互联网时代,社交媒体平台成为了人们获取信息、分享生活的重要渠道,而新浪的微博更是其中的佼佼者。为了方便开发者集成微博登录功能,新浪提供了JAVA版的SDK,...

    科汛CMS v8新浪微博登录插件 v1.1-源码.zip

    《科汛CMS v8新浪微博登录插件 v1.1 源码解析及应用》 在互联网技术高速发展的今天,网站内容管理系统(CMS)已成为众多企业和个人构建网站的重要工具。科汛CMS作为其中的一员,以其易用性、灵活性和强大的功能受到...

Global site tag (gtag.js) - Google Analytics