当前位置: 首页 > news >正文

984网站建设项目.net 网站开发视频

984网站建设项目,.net 网站开发视频,设计网站推荐素材网站,近期热点话题前面章节已经介绍使用code换取Token的整个流程了&#xff0c;这里不再重复阐述了&#xff0c;下面我们介绍如何使用Token查询用户信息等操作。 1.引入相关依赖Maven <dependency> <groupId>oauth.signpost</groupId> <artifactId>signpost-co…

        前面章节已经介绍使用code换取Token的整个流程了,这里不再重复阐述了,下面我们介绍如何使用Token查询用户信息等操作。

1.引入相关依赖Maven

<dependency>
    <groupId>oauth.signpost</groupId>
    <artifactId>signpost-core</artifactId>
    <version>1.2.1.2</version>
</dependency>

<dependency>
    <groupId>oauth.signpost</groupId>
    <artifactId>signpost-commonshttp4</artifactId>
    <version>1.2.1.2</version>
</dependency>

<dependency>
    <groupId>com.twitter</groupId>
    <artifactId>twitter-api-java-sdk</artifactId>
    <version>1.1.4</version>
</dependency>

<dependency>
    <groupId>commons-httpclient</groupId>
    <artifactId>commons-httpclient</artifactId>
    <version>3.1</version>
</dependency><dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>29.0-jre</version>
</dependency>

2.相关的配置类

/*** 推特相关配置*/
public class TwitterConfig {/*** 客户id和客户私钥*/public static final String CLIENT_ID = "c3dqY111tjbnFPNDM6MTpjaQ";public static final String CLIENT_SECRET = "kf1119fmdeXZHpOV-fjv9umx55ZdccCkNONjea";/*** 应用KYE和私钥*/public static final String CONSUMER_KEY = "lhyfiD111MffGeHMR";public static final String CONSUMER_SECRET = "BRNxnV5Lx111jtptduIkcwjB";/*** 应用的TOKEN*/public static final String ACCESS_TOKEN = "14821111633-A8xyN5111FgkbStu";public static final String ACCESS_TOKEN_SECRET = "oZaKBphpoo111SZvzoXPAQ";}

3.查询开发者账号的推特信息

public JSONObject getUserInfo(){//下面需要开发者门户里面的key和私钥,还包括Token和私钥CommonsHttpOAuthConsumer consumer = new CommonsHttpOAuthConsumer(TwitterConfig.CONSUMER_KEY, TwitterConfig.CONSUMER_SECRET);consumer.setTokenWithSecret(TwitterConfig.ACCESS_TOKEN, TwitterConfig.ACCESS_TOKEN_SECRET);// 创建HttpClient对象HttpClient httpClient = this.setProxy();// 创建API请求,例如获取用户的时间线try {//请求的地址URIBuilder uriBuilder = new URIBuilder("https://api.twitter.com/2/users/me");ArrayList<NameValuePair> queryParameters;queryParameters = new ArrayList<>();//我们需要查询用户的那些信息queryParameters.add(new BasicNameValuePair("user.fields", "id,name,username,profile_image_url,public_metrics"));queryParameters.add(new BasicNameValuePair("expansions", "pinned_tweet_id"));uriBuilder.addParameters(queryParameters);HttpGet request = new HttpGet(uriBuilder.build());request.setHeader("Content-Type","application/json");consumer.sign(request);// 创建参数列表HttpResponse response =  httpClient.execute(request);// 处理API响应int statusCode = response.getStatusLine().getStatusCode();String responseBody = EntityUtils.toString(response.getEntity());if (statusCode == 200) {System.out.println(responseBody);return JSONObject.parseObject(responseBody);} else {System.out.println(responseBody);return JSONObject.parseObject(responseBody);}} catch (OAuthMessageSignerException e) {e.printStackTrace();} catch (OAuthExpectationFailedException e) {e.printStackTrace();} catch (OAuthCommunicationException e) {e.printStackTrace();} catch (URISyntaxException e) {e.printStackTrace();}catch (IOException e) {e.printStackTrace();}return null;}

4.根据用户Token查询授权用户基本信息

    /*** 根据用户token换取用户信息* @return*/public TwitterUserDto getUserInfoByToken(String token){StringBuilder result = new StringBuilder();BufferedReader in = null;try {// Twitter API endpointString endpoint = "https://api.twitter.com/2/users/me";// 构造带有参数的 URLString urlWithParams = endpoint + "?user.fields=name,pinned_tweet_id,profile_image_url";// 创建 URL 对象URL url = new URL(urlWithParams);URLConnection connection = url.openConnection();connection.setRequestProperty("Authorization", "Bearer " + token);connection.setRequestProperty("Content-Type","application/json");connection.connect();in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ((line = in.readLine()) != null){result.append(line);}TwitterUserDto dto = new TwitterUserDto();JSONObject json = JSONObject.parseObject(result.toString());JSONObject user = (JSONObject)json.get("data");if(user != null){dto.setId(user.get("id").toString());dto.setName(user.get("name").toString());dto.setUsername(user.get("username").toString());}return dto;} catch (Exception e) {e.printStackTrace();}return null;}
@Data
@Accessors(chain = true)
public class TwitterUserDto {/*** 推特名 @xxxx*/private String username;/*** 推特用户名*/private String name;/*** 推特用户ID*/private String id;
}

5.根据用户名查询用户推特信息 

/*** 根据用户名查询用户推特数据* @return*/public TwitterUserDto getTwitterUserByUserName(String userName){//推特应用里面的相关私钥和TokenCommonsHttpOAuthConsumer consumer = new CommonsHttpOAuthConsumer(TwitterConfig.CONSUMER_KEY, TwitterConfig.CONSUMER_SECRET);consumer.setTokenWithSecret(TwitterConfig.ACCESS_TOKEN, TwitterConfig.ACCESS_TOKEN_SECRET);// 创建HttpClient对象HttpClient httpClient = this.setProxy();// 创建API请求,例如获取用户的时间线try {URIBuilder uriBuilder = new URIBuilder("https://api.twitter.com/2/users/by");ArrayList<NameValuePair> queryParameters;queryParameters = new ArrayList<>();//需要查询的用户名   多个用户名称用逗号隔开(例如:张三,李四,王五   如果不行用:张三%20李四%20王五)queryParameters.add(new BasicNameValuePair("usernames", userName));queryParameters.add(new BasicNameValuePair("expansions", "pinned_tweet_id"));uriBuilder.addParameters(queryParameters);HttpGet request = new HttpGet(uriBuilder.build());request.setHeader("Content-Type","application/json");consumer.sign(request);// 创建参数列表HttpResponse response =  httpClient.execute(request);// 处理API响应int statusCode = response.getStatusLine().getStatusCode();String responseBody = EntityUtils.toString(response.getEntity());if (statusCode == 200) {TwitterUserDto dto = new TwitterUserDto();JSONObject json = JSONObject.parseObject(responseBody);JSONArray user = (JSONArray)json.get("data");if(user != null){json = (JSONObject)user.get(0);dto.setId(json.get("id").toString());dto.setName(json.get("name").toString());dto.setUsername(json.get("username").toString());}return dto;} else {return null;}} catch (OAuthMessageSignerException e) {e.printStackTrace();} catch (OAuthExpectationFailedException e) {e.printStackTrace();} catch (OAuthCommunicationException e) {e.printStackTrace();} catch (URISyntaxException e) {e.printStackTrace();}catch (IOException e) {e.printStackTrace();}return null;}/*** 设置请求代理* @param* @return*/private HttpClient setProxy(){// 创建HttpClientBuilder对象HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();HttpClient client = httpClientBuilder.build();;return client;}

 

注意事项:如果推特报401的话请检查Token是否过期,如果报400的话需要好好检查一下参数问题,它不会给你特别明显错误的提示,细节问题只能自己注意一下了。

http://www.yayakq.cn/news/879078/

相关文章:

  • 单位网站建设费如何入账广告设计公司简介范文
  • 网站建设的需求客户网站开发技术 下载
  • 门户网站建设工作情况建立公司网站的目的
  • 佛山品牌网站设计怎么免费推广自己网站
  • 商业网站建设知识点青岛可以做网站的公司
  • 织梦模板添加网站地图IT科技资讯新闻类织梦网站模板
  • 平湖专业网站制作品牌网站建设怎么收费
  • 做宠物网站赚钱吗广告设计与制作网站
  • 淄博网站排名seo哈尔滨房地产网站建设
  • 平台网站建设网站廊坊网站自助建站
  • seo对网站的重要性做网站需要什么学历
  • 网站怎么做防御手机端快速建站工具
  • 广州怎么找做网站的公司超级简历免费模板
  • 专注于网站营销服务网页设计版面划分
  • 北京网站建设认知山西网站建设报价单
  • 外贸建站cms东台网站制作公司
  • 如何查看网站做没做竞价石狮服装城商家微网站建设
  • 网站制作公司技术部门seo优化关键词排名
  • 有什么做海报的网站吗wordpress仪表盘加速
  • 凡科做的网站好吗西安市未央区建设局官方网站
  • 装饰公司网站模板公司简历模板免费
  • 成都网站建设推来客网站系统报价阿里万网站建设
  • 网站建设流程策划方案德州seo外包
  • 东莞网络建站公司安徽省港航建设投资集团网站
  • 南浔区城乡建设局网站wordpress widget插件
  • 永州冷水滩网站建设app制作平台哪个好用
  • spark 网站开发选服务好的分销管理系统
  • excel免费模板网站百度开户
  • 越秀区pc端网站建设关于网页制作
  • 让互联网之光点亮生活北京网站优化排名推广