-
腾讯微博授权Oauth2.00
如何改成最新的腾讯微博授权Oauth2.0
回调无法获得oauth_token与oauth_verifier
@RequestMapping(value = "/tencent/login", method = RequestMethod.GET) public String tencentLogin(HttpServletRequest request, Model m) throws IOException { com.tencent.weibo.beans.OAuth oauth = new com.tencent.weibo.beans.OAuth(); OAuthClient auth = new OAuthClient(); try { oauth = auth.requestToken(oauth); if (oauth.getStatus() == 1) { return EnumErrorCode.ERROR_404.getValue(); } else { String oauth_token = oauth.getOauth_token(); if(oauth_token != null && !"".equals(oauth_token)){ String clientIp = WingsStrUtil.getRemortIP(request); cacheService.putCache("/OAuth/" + clientIp + oauth_token, oauth, Constants.EXPIRY); cacheService.putCache("/OAuthClient/" + clientIp + oauth_token, auth, Constants.EXPIRY); String url = "http://open.t.qq.com/cgi-bin/authorize?oauth_token=" + oauth_token; return "redirect:" + url; } } } catch (Exception e1) { e1.printStackTrace(); } return "/accounts/login"; } /** * 腾讯微博登录成功后的回调地址 * @param oauth_token * @param oauth_verifier * @param openid * @return */ @RequestMapping(value = "/tencent/login/callback", method = RequestMethod.GET) public String tencentLoginCallback(String oauth_token, String oauth_verifier, String openid, String openkey, HttpServletRequest request, HttpServletResponse response, Model model) { if(openid == null || "".equals(openid)) return EnumErrorCode.ERROR_404.getValue(); String clientIp = WingsStrUtil.getRemortIP(request); com.tencent.weibo.beans.OAuth oauth = (OAuth)cacheService.getCache("/OAuth/" + clientIp + oauth_token, Constants.EXPIRY); OAuthClient auth = (OAuthClient)cacheService.getCache("/OAuthClient/" + clientIp + oauth_token, Constants.EXPIRY); try { oauth.setOauth_verifier(oauth_verifier); oauth = auth.accessToken(oauth); //认证状态,0:成功,1:Request失败,2:Access失败 if(oauth.getStatus() == 0){ ThirdpartUser thirdpartUser = userService.getThirdpartUser(openid, EnumThirdpartType.TENCENT); //存在中间表 if(thirdpartUser != null){ thirdpartService.updateVerifier(openid, EnumThirdpartType.TENCENT, oauth_verifier); com.a.b.pojo.accounts.User a= userService.login(thirdpartUser.getUserId(), request, response); cacheService.putCache(ThirdPartController.class.getName() + "/OAuthClient/" + a.getId(), auth, 24 * 3600); CookieUtil.saveUser(request, response, a.getId(), a.getRandom(), false); }else{ return EnumErrorCode.ERROR_404.getValue(); } }else{//不存在中间表 User_API us = new User_API(); JSONObject jsonObject = new JSONObject(us.info(oauth, "json")); //没有获取到用户信息 if(jsonObject == null) return EnumErrorCode.ERROR_404.getValue(); else{ jsonObject = jsonObject.getJSONObject("data"); String name = jsonObject.getString("nick"); String iconImageLarge = jsonObject.getString("head"); iconImageLarge = imageService.getHttpImageTempFile(iconImageLarge, 180, 180, false, false); if(iconImageLarge != null && !"".equals(iconImageLarge)) iconImageLarge = imageService.getTempImageUrl(iconImageLarge); String location = jsonObject.getString("location"); String email = jsonObject.getString("email"); String[] address = location.split(" "); String cityName = null; int cityId = 0; if(address.length > 1) cityName = address[1]; if(cityName != null){ City city = userService.getLikeCity(cityName); if(city == null) cityId = 0; else cityId = city.getId(); } model.addAttribute("email", email); model.addAttribute("cityId", cityId); model.addAttribute("thirdpartId", openid); model.addAttribute("iconImageLarge", iconImageLarge); model.addAttribute("name", name); model.addAttribute("thirdpartType", EnumThirdpartType.TENCENT.getValue()); model.addAttribute("verifier", oauth_verifier); return "/accounts/confim"; } } }else//验证失败 return EnumErrorCode.ERROR_404.getValue(); } catch (Exception e1) { e1.printStackTrace(); } return "redirect:/"; }
有没有更好的方式来实现2013年5月15日 16:33
目前还没有答案
相关推荐
本示例代码关注的是如何使用Java语言结合腾讯微博的OAuth2.0授权机制来发送文本微博。OAuth2.0是一种广泛采用的开放标准,用于授权第三方应用访问用户的数据,而无需获取用户的用户名和密码。下面我们将深入探讨这个...
(2) 客户端引导用户到腾讯微博授权页面。 (3) 用户同意后,腾讯会返回授权码。 (4) 通过授权码换取Access Token和过期时间。 (5) 使用Access Token进行数据交互。 4. 内容转发实现 一旦获取了用户授权,应用可以...
在Android应用开发中,接入第三方服务,如腾讯微博,通常涉及到OAuth2.0授权机制,以便安全地获取用户的授权信息并进行数据交互。本话题主要围绕Android应用如何使用OAuth2.0与腾讯微博进行集成,并通过自定义...
在本文中,我们将深入探讨如何使用Java实现腾讯微博的OAuth2.0授权,并结合官方方法发送文本和图片。首先,让我们了解OAuth2.0的基本概念,然后详细讲解腾讯微博的TAPI(Tencent API)以及如何整合这些知识来实现所...
这说明除了Sina Weibo之外,DEMO还支持腾讯微博的OAuth2.0授权,使得用户可以使用同一套授权机制登录并分享到两个不同的社交媒体平台。在实现这个功能时,开发者需要遵循腾讯微博的API文档,处理好授权请求和响应,...
腾讯微博作为中国知名的社交媒体平台,也提供了类似的开放平台,允许开发者利用Oauth2.0授权协议来实现用户身份验证和数据获取。本文将深入讲解腾讯微博Oauth2.0授权认证的原理及其在易语言中的实现。 OAuth2.0是一...
asp.net 腾讯微博SDK OAuth2.0API接口,示例源码,登陆腾讯微博授权成功后可获得昵称、图像、OpenId,最新微博及粉丝等。100%可用,示例应用于 http://goupiaotong.com/login.aspx
对不起,我不得不给这个资源挂上分数,因为该死的CSDN非要折腾个这垃圾功能,我要下载别人的东西没积分没办法....这个里面包括代码,我整理的word笔记文档。 只是我觉得这远远不够,过几天我会录制一个视频,因为我...
在本文中,我们将深入探讨OAuth 2.0的工作原理以及如何将其应用于新浪微博和腾讯微博的授权与发布功能。 OAuth 2.0的核心流程包括四个主要角色:资源所有者(User)、资源服务器(Resource Server)、客户端...
QQ OAuth2.0是腾讯提供的服务,允许开发者在自己的应用中集成QQ登录,提升用户体验。 首先,理解OAuth2.0的基本流程至关重要。它通常包含四个主要角色:资源所有者(用户)、客户端(你的应用)、授权服务器(QQ)...
在本项目中,我们看到的是一个使用C#编程语言实现的OAuth2.0客户端,该客户端专门设计用于与新浪微波(可能指的是新浪微博)和QQ进行集成。 首先,OAuth2.0的核心概念包括授权服务器、资源所有者和第三方应用。授权...
2. 拼接授权URL:根据腾讯微博的OAuth2.0协议,构建授权请求的URL,包含App ID、回调地址、权限范围等参数。 3. 用户授权:引导用户跳转到上述URL,用户在腾讯微博上确认授权。 4. 获取授权码:用户授权后,腾讯微博...
腾讯微博采用OAuth2.0协议来授权第三方应用访问用户的微博资源。这个过程通常包括四个步骤:授权请求、重定向、换取访问令牌和使用令牌。在授权请求阶段,用户会被引导到腾讯微博的授权页面,确认是否给予应用相应的...
流程与新浪类似,用户授权后,客户端获取到的访问令牌可用于调用腾讯微博的API,实现功能如分享内容、获取用户社交数据等。 4. **网易微博OAuth**:网易微博的OAuth整合也基于OAuth 2.0标准,开发者需要在网易微米...
首先,我们来看“新浪腾讯微博分享demo”的核心——Oauth2.0授权机制。Oauth2.0是一种广泛使用的授权框架,允许第三方应用安全地访问用户的社交账户资源,如发布状态、上传图片等,而无需获取用户的登录凭证。在这个...
1. **OAuth2.0流程**:用户打开应用,应用引导用户跳转到腾讯微博授权页面,用户同意授权后,腾讯微博返回一个授权码给应用。应用拿着这个授权码和自己的appkey、secret向腾讯微博服务器请求访问令牌(Access Token...
认证流程与新浪类似,但需要注意腾讯微博可能需要配置回调URL,用于接收授权后的code。 3. **网易微博OAuth认证**: 网易微博的OAuth流程也基于OAuth2.0,开发者需要在网易通行证开放平台获取App Key和App Secret...
3. **获取Access Token**:引导用户授权,通过OAuth2.0获取Access Token。 4. **调用API**:使用SDK提供的方法,如`$client->post('statuses/share', $params)`来发布微博,其中`$params`是包含微博内容的参数数组。...
腾讯微博的例子中,开发者可能需要使用腾讯提供的SDK或者按照OAuth 2.0流程手动处理请求和响应。 在实际开发中,需要注意以下几点: - **安全性**:确保所有的通信都在HTTPS下进行,以保护用户的授权信息不被窃取。...
总结来说,通过Oauth2.0协议,我们可以轻松地实现对新浪微博、腾讯微博和QQ空间的授权、绑定及分享。同时,QQ控件的使用进一步简化了开发过程,提高了应用的易用性。在实际项目中,开发者应根据具体需求,灵活选择...