首页 > 其他分享 >腾讯、新浪微博 oauth安全认证

腾讯、新浪微博 oauth安全认证

时间:2023-05-06 20:02:51浏览次数:33  
标签:weibo Exception accessToken System param 微博 腾讯 oauth requestToken


在做一个需要调用微博接口的项目中.发现了一些问题

1.腾讯微博sdk的封装粒度不够,需要在其上做二次开发

2.新浪,腾讯微博没有实现统一的接口,在做项目的时候需要将它们分开来实现,代码看起来很别扭

我所做的就是解决了以上两个问题,所以现在做微博应用开发非常方便

统一接口



Java代码

/** 

 * @Description:微博接口 

 */ 

public interface Weibo { 

 /** 

 * 得到RequestToken 

 * @param callbackUrl 

 * @return 

 */ 

 public RequestToken getRequestToken(String callbackUrl) throws Exception; 


 /** 

 * 得到AccessToken 

 * @param requestToken 

 * @param verifier 

 * @return 

 * @throws Exception 

 */ 

 public AccessToken getAccessToken(RequestToken requestToken,String verifier) throws Exception; 


 /** 

 * 

 * @param accessToken 

 */ 

 public void setAccessToken(AccessToken accessToken); 

 /** 

 * 得到用户信息 

 * @return 

 */ 

 public User getUserInfo() throws Exception; 

 /** 

 * friendNum是否已经被关注 

 * @param friendNum 

 * @return 

 */ 

 public boolean isFriends(String friendNum) throws Exception; 

 /** 

 * 关注friendNum 

 * @param friendNum 

 */ 

 public void createFriendship(String friendNum) throws Exception; 


 /** 

 * 发微博 

 * @param info 微博信息 

 * @param file 上传的图片文件,不上传文件传null 

 */ 

 public void publishMsg(String info, File file) throws Exception; 

} 


/** 

 * @Description:微博接口 

 */ 

public interface Weibo { 

 /** 

 * 得到RequestToken 

 * @param callbackUrl 

 * @return 

 */ 

 public RequestToken getRequestToken(String callbackUrl) throws Exception; 


 /** 

 * 得到AccessToken 

 * @param requestToken 

 * @param verifier 

 * @return 

 * @throws Exception 

 */ 

 public AccessToken getAccessToken(RequestToken requestToken,String verifier) throws Exception; 


 /** 

 * 

 * @param accessToken 

 */ 

 public void setAccessToken(AccessToken accessToken); 

 /** 

 * 得到用户信息 

 * @return 

 */ 

 public User getUserInfo() throws Exception; 

 /** 

 * friendNum是否已经被关注 

 * @param friendNum 

 * @return 

 */ 

 public boolean isFriends(String friendNum) throws Exception; 

 /** 

 * 关注friendNum 

 * @param friendNum 

 */ 

 public void createFriendship(String friendNum) throws Exception; 


 /** 

 * 发微博 

 * @param info 微博信息 

 * @param file 上传的图片文件,不上传文件传null 

 */ 

 public void publishMsg(String info, File file) throws Exception; 

}




开发步骤如下:

1.设置项目的key和secret(key,secret是用微博帐号申请的),只需要初始化一次

新浪:



Java代码

System.setProperty("weibo4j.oauth.consumerKey", "xxx"); 

System.setProperty("weibo4j.oauth.consumerSecret", "xxxxxxxxxx"); 


System.setProperty("weibo4j.oauth.consumerKey", "xxx"); 

System.setProperty("weibo4j.oauth.consumerSecret", "xxxxxxxxxx");


腾讯:



Java代码

System.setProperty("qqweibo.oauth.consumerKey","xxx"); 

System.setProperty("qqweibo.oauth.customSecret","xxxxxxxxxx"); 


System.setProperty("qqweibo.oauth.consumerKey","xxx"); 

System.setProperty("qqweibo.oauth.customSecret","xxxxxxxxxx");


2.传入微博帐号登录后需要返回的地址callbackUrl,得到requestToken和授权url

新浪:



Java代码

Weibo weibo = new SinaWeibo(); 

 try { 

 RequestToken requestToken = weibo.getRequestToken(callbackUrl); 

 System.out.println(requestToken.getReqToken()+"-->"+requestToken.getReqTokenSecret()); 

 System.out.println(requestToken.getAuthorizationURL()); 

 } catch (Exception e) { 

 e.printStackTrace(); 

 } 


 Weibo weibo = new SinaWeibo(); 

 try { 

 RequestToken requestToken = weibo.getRequestToken(callbackUrl); 

 System.out.println(requestToken.getReqToken()+"-->"+requestToken.getReqTokenSecret()); 

 System.out.println(requestToken.getAuthorizationURL()); 

 } catch (Exception e) { 

 e.printStackTrace(); 

 }



腾讯:



Java代码

Weibo weibo = new QQWeibo(); 

 try { 

 RequestToken reqToken = weibo.getRequestToken(callbackUrl); 

 System.out.println(reqToken.getReqToken()+"-->"+ reqToken.getReqTokenSecret()); 

 System.out.println(reqToken.getAuthorizationURL()); 

 } catch (Exception e) { 

 // TODO Auto-generated catch block 

 e.printStackTrace(); 

 } 


 Weibo weibo = new QQWeibo(); 

 try { 

 RequestToken reqToken = weibo.getRequestToken(callbackUrl); 

 System.out.println(reqToken.getReqToken()+"-->"+ reqToken.getReqTokenSecret()); 

 System.out.println(reqToken.getAuthorizationURL()); 

 } catch (Exception e) { 

 // TODO Auto-generated catch block 

 e.printStackTrace();


}
3. 在浏览器上输入授权url,用微博帐号登录后跳转到callbackUrl,获取callbackUrl后面的参数oauth_verifier的值,

通过传入requestToken,oauth_verifier的值得到AccessToken

新浪:



Java代码

Weibo weibo = new SinaWeibo(); 

 try { 

 AccessToken accessToken = weibo.getAccessToken(requestToken, oauth_verifier); 

 System.out.println(accessToken.getAccessToken()+"-->"+ accessToken.getAccessTokenSecret()); 

 } catch (Exception e) { 

 e.printStackTrace(); 

 } 


 Weibo weibo = new SinaWeibo(); 

 try { 

 AccessToken accessToken = weibo.getAccessToken(requestToken, oauth_verifier); 

 System.out.println(accessToken.getAccessToken()+"-->"+ accessToken.getAccessTokenSecret()); 

 } catch (Exception e) { 

 e.printStackTrace();


} 腾讯:



Java代码

Weibo weibo = new QQWeibo(); 

try { 

 AccessToken accessToken = weibo.getAccessToken(reqToken, oauth_verifier); 

 System.err.println(accessToken.getAccessToken()+"-->"+ accessToken.getAccessTokenSecret()); 

} catch (Exception e) { 

 e.printStackTrace(); 

} 


 Weibo weibo = new QQWeibo(); 

 try { 

 AccessToken accessToken = weibo.getAccessToken(reqToken, oauth_verifier); 

 System.err.println(accessToken.getAccessToken()+"-->"+ accessToken.getAccessTokenSecret()); 

 } catch (Exception e) { 

 e.printStackTrace();


} 得到accessToken对象后就可以保存下来,以后调用关注好友接口,发微博接口都需要用到

4.调用获取用户接口

新浪:



Java代码

Weibo weibo = new SinaWeibo(); 

 try { 

 weibo.setAccessToken(accessToken); 

 User user = weibo.getUserInfo(); 

 System.out.println(user.getHuaming()); 

 } catch (Exception e) { 

 e.printStackTrace(); 

 } 


Weibo weibo = new SinaWeibo(); 

 try { 

 weibo.setAccessToken(accessToken); 

 User user = weibo.getUserInfo(); 

 System.out.println(user.getHuaming()); 

 } catch (Exception e) { 

 e.printStackTrace(); 

 }


腾讯:



Java代码

Weibo weibo = new QQWeibo(); 

 try { 

 weibo.setAccessToken(accessToken); 

 User user = weibo.getUserInfo(); 

 System.out.println(user.getHuaming()); 

 } catch (Exception e) { 

 e.printStackTrace(); 

 } 


Weibo weibo = new QQWeibo(); 

 try { 

 weibo.setAccessToken(accessToken); 

 User user = weibo.getUserInfo(); 

 System.out.println(user.getHuaming()); 

 } catch (Exception e) { 

 e.printStackTrace();


} 5.调用关注接口,发微博等接口同4



最后我把封装的jar包发给大家

标签:weibo,Exception,accessToken,System,param,微博,腾讯,oauth,requestToken
From: https://blog.51cto.com/u_7450530/6251095

相关文章

  • OAuth2.0 第三方登录
    本篇内容以用户访问百度,通过新浪微博的第三方登录百度过程讲解用户:资源拥有者百度:客户端新浪微博:认证服务器前置条件:百度已经向新浪微博申请注册,分配给百度的client_id是2512457640地址流程图如下1.用户(资源拥有者)访问百度(客户端)2.点击新浪微博(认证服务器)登录,浏览......
  • 配置wordpress:添加分享到微博功能(wordpress 6.2)
    一,添加代码1,代码:<atarget="_blank"href='https://service.weibo.com/share/share.php?url=<?phpthe_permalink();?>&title=<?phpthe_title();?>'><imgid="imgSinaShare"class="img_sina_share&qu......
  • 微信小程序打开腾讯会议小程序并入会
    wx.navigateToMiniProgram({appId:'wx33fd6cdc62520063',//要跳转的微信小程序appidpath:'pages/sub-preMeeting/join-meeting/join-meeting?scene=m%3Dxxxxxxxxx',//要跳转到的页面路径success(){},fail(){}});其中xxxxxxxxx......
  • 从0开始构建一个Oauth2Server服务 <19> Token 编解码
    Token编解码令牌提供了一种通过在令牌字符串本身中编码所有必要信息来避免将令牌存储在数据库中的方法。这样做的主要好处是API服务器能够验证访问令牌,而无需对每个API请求进行数据库查找,从而使API更容易扩展。OAuth2.0BearerTokens的好处是应用程序不需要知道您决定如......
  • 星巴克阿根廷一条微博引发的公关危机
    道歉也能引来麻烦?匪夷所思,但这样的事情确实就发生了,还发生在星巴克身上,可给这个全球咖啡巨头上了深刻的一课。事情是这样的。几小时之前,星巴克阿根廷在Facebook和Twitter上面向客户发了这么一条道歉声明:Pedimosdisculpas,yaquedebidoaunquiebretemporariodestock,ena......
  • 腾讯音乐SQL题
    1.计算歌曲完播率请根据user_listen_record、song_library计算出QQ音乐20230306歌曲完播率(播放时长>=听歌时长)输出表结构如下,其中完播率保留小数点后2位小数并按照完播率重小到大排序:song_playback_history已知QQ音乐部分用户听歌流水表格式和样例数据如下:user_listen_rec......
  • PYTHON 微博单独网址
    fromseleniumimportwebdriverfromselenium.webdriverimportActionChainsfromselenium.webdriver.common.byimportBy#按照什么方式查找,By.ID,By.CSS_SELECTORfromselenium.webdriver.common.keysimportKeys#键盘按键操作fromselenium.webdriver.supportimport......
  • 从0开始构建一个Oauth2Server服务 <15> 安全问题
    安全问题以下是构建授权服务器时应考虑的一些已知问题。网络钓鱼Attack针对OAuth服务器的一种潜在Attack是网络钓鱼Attack。这是Attack者创建一个看起来与服务授权页面相同的网页的地方,该页面通常包含用户名和密码字段。然后,Accacker可以通过各种手段诱骗用户访问该页面。除非用......
  • sb集成SECURITY、OAUTH2实现认证鉴权、资源管理
    1、Oauth2简介OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth1.0即完全废止了OAuth1.0。2、Oauth2服......
  • vue 使用腾讯云 cos存储 上传
    参考文档:https://blog.csdn.net/qq_34170840/article/details/1245203881、页面部分点击查看代码<inputref="fileRef"title=""type='file'name="file"multipleclass="file-input"@change="uploadStart......