java代碼調用twitter-api用例實戰

一、申請twitter開發者賬號

首先先申請twitter開發者免費的API,要填寫申請的內容,放心大膽地寫,申請完,會提供免費的API接口。
以下是我申請到的三個免費API
在這里插入圖片描述
申請完開始進行測試調用。
讀官方文檔賬戶認證那塊:https://developer.twitter.com/en/docs/authentication/overview 四種鑒權方式讀的我很懵逼,不知道如何去測試我的接口。
研究了很久才了解清楚正確的請求方式。

二、postman測試接口

以下是用postman請求示例:

1.先確定你開發者賬戶允許的請求方式

(網頁進行了自動翻譯)
在這里插入圖片描述

2.查看自己的consumer key和 consumer secret、access token和token secret

在這里插入圖片描述

3.在postman里進行配置,把對應的key和密鑰填到指定的內容里。

在這里插入圖片描述

4.填寫請求地址和請求參數,進行Get請求。

在這里插入圖片描述
postman請求完成,開始進行java代碼編寫。

三、java代碼編寫

官方提供了sdk,你可以引用官方提供的包。

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

但是我沒有用到這個包,我引用進來發現包內部出現錯誤,雖然能編譯但是錯誤提示很難受。
在這里插入圖片描述
有大神知道這個問題怎么解決可以評論告訴我。
在不引用官方提供的SDK的情況下,需要引用到其他鑒權的包。

1.引用鑒權的SDK包。

在pom.xml里配置

	<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>

配置完成,開始寫測試代碼。

2. 編寫測試代碼

 public static JSONObject getUserInfo(String token,String token_secret, String active){CommonsHttpOAuthConsumer consumer = new CommonsHttpOAuthConsumer(consumerKey, consumerSecret);consumer.setTokenWithSecret(token, token_secret);// 創建HttpClient對象HttpClient httpClient = setProxy(active);// 創建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);// 創建參數列表
//            List<NameValuePair> bodypara = new ArrayList<>();
//            bodypara.add(new BasicNameValuePair("oauth_verifier", verifier));// 將參數轉換為UrlEncodedFormEntity
//            StringEntity entity = new UrlEncodedFormEntity(bodypara,StandardCharsets.UTF_8);
//            // 設置HttpPost的實體
//            request.setEntity(entity);// 發起API請求HttpResponse response =  httpClient.execute(request);// 處理API響應int statusCode = response.getStatusLine().getStatusCode();String responseBody = EntityUtils.toString(response.getEntity());if (statusCode == 200) {System.out.println("API調用成功!");System.out.println("響應內容:");System.out.println(responseBody);return JSONObject.parseObject(responseBody);} else {System.out.println("API調用失敗,狀態碼:" + statusCode);System.out.println("錯誤信息:");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;}/*** 設置請求代理* @param active* @return*/private static HttpClient  setProxy(String active){HttpClient client =null;// 創建HttpClientBuilder對象HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();if (null==active ||"dev".equals(active)){// 設置代理主機和端口HttpHost proxy = new HttpHost("127.0.0.1", 1080); // 替換為您的代理主機和端口httpClientBuilder.setProxy(proxy);client = httpClientBuilder.build();}if ("prod".equals(active)||"test".equals(active)){client = httpClientBuilder.build();;}return client;}

進行接口測試,測試成功。

  public static void main(String[] args) {String accessToken="1517001992861716480-xVY7MpIqQrH1XeFv5l6rOLxxxxxx";String accessSecret="A52yWlrFd1MDIrYU0IcnmlnmimMOw0UXRJNxxxxxxx";JSONObject jsonObject = getUserInfo(accessToken,accessSecret,"dev");System.out.println(jsonObject);}

接口參數解析

在測試的接口:https://api.twitter.com/2/users/me 中沒有必傳的參數,但是有些選項參數。
user.fields、expansions、tweet.fields三個。
在xx.fields參數傳值時,是要你指定返回集合List里含有哪些返回字段。
比如在user.fields里傳值id,name,username,profile_image_url,public_metrics這五個字段,分別代表用戶的ID、用戶昵稱、用戶名、頭像Url、和公開的信息數。
在這里插入圖片描述
而expansions值默認都是傳pinned_tweet_id。顯示擴展的twitterID。
在這里插入圖片描述
設置這個值之后,可以設置tweet.fields字段值。
如果不設置expansions的值,設置tweet.fields則不起作用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161631.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161631.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161631.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《安富萊嵌入式周報》第327期:Cortex-A7所有外設單片機玩法LL/HAL庫全面上線,分享三款GUI, PX5 RTOS推出網絡協議棧,小米Vela開源

周報匯總地址&#xff1a;嵌入式周報 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬漢嵌入式論壇 - Powered by Discuz! 1、2023 Hackaday大賽胸牌開源 Vectorscope-main.zip (66.83MB) GitHub - Hack-a-Day/Vectorscope: Vectorscope badg…

Baidu Comate 基于百度文心一言的智能編碼助手

本心、輸入輸出、結果 文章目錄 Baidu Comate 基于百度文心一言的智能編碼助手前言產品能力主要功能特性JetBrains IntelliJ IDEA 插件安裝相關鏈接花有重開日,人無再少年實踐是檢驗真理的唯一標準Baidu Comate 基于百度文心一言的智能編碼助手 編輯:簡簡單單 Online zuozuo …

git commit message 書寫規范

在使用 Git 提交時&#xff0c;遵循良好的提交消息規范可以提高代碼的可讀性和可維護性。以下是一些常見的 Git 提交消息書寫規范&#xff1a; 提交消息格式&#xff1a;一個提交消息通常包含三個部分&#xff1a;標題、空行和正文。它們之間使用空行分隔。 復制 <標題>&…

vue3項目中使用富文本編輯器

前言 適配 Vue3 的富文本插件不多&#xff0c;我看了很多插件官網&#xff0c;也有很多寫的非常棒的&#xff0c;有UI非常優雅讓人耳目一新的&#xff0c;也有功能非常全面的。 如&#xff1a; Quill&#xff0c;簡單易用&#xff0c;功能全面。editorjs&#xff0c;UI極其優…

echarts的橫向柱狀圖文字省略,鼠標移入顯示內容 vue3

效果圖 文字省略 提示 如果是在x軸上的&#xff0c;就在x軸上添加triggerEvent: true,如果是y軸就在y軸添加&#xff0c;我是在y軸上添加的 并且自定義的方法&#xff08;我取名為extension&#xff09; // echarts 橫向省略文字 鼠標移入顯示內容 export const extension…

AT89S52單片機的最小應用系統

目錄 ?一.時鐘電路設計 1.內部時鐘方式 2.外部時鐘方式 3.時鐘信號的輸出 二.機器周期&#xff0c;指令周期與指令時序 1.時鐘周期 2.機器周期 3.指令周期 三.復位操作和復位電路 1.復位操作 2 復位電路設計 四.低功耗節電模式 AT89S52本身片內有8KB閃爍存儲器&am…

Redisson分布式鎖源碼解析

一、使用Redisson步驟 Redisson各個鎖基本所用Redisson各個鎖基本所用Redisson各個鎖基本所用 二、源碼解析 lock鎖 1&#xff09; 基本思想&#xff1a; lock有兩種方法 一種是空參 另一種是帶參 * 空參方法&#xff1a;會默認調用看門狗的過期時間30*1000&…

kubernetes|云原生|Deployment does not have minimum availability 的解決方案(資源隱藏的由來)

前言&#xff1a; 最近在部署prometheus的過程中遇到的這個問題&#xff0c;感覺比較的經典&#xff0c;有必要記錄一下。 現象是部署prometheus主服務的時候&#xff0c;看不到pod&#xff0c;只能看到deployment&#xff0c;由于慌亂&#xff0c;一度以為是集群有毛病了&am…

c# 基礎語法

c# 程序結構 using System.Collections.Generic; namespace demo1; //一個命名空間可以包含多個類 using System.IO; using System.Drawing;class proj {/// <summary>/// c#是微軟開發的&#xff0c;基于c和c的一種面象對象編程語言&#xff0c;用于快速開發windows桌…

真實網絡中的 bbr

本文包含中心極限定理&#xff0c;大數定律&#xff0c;經濟規律等&#xff0c;bbr 倒沒多少&#xff0c;不過已經習慣把 bbr 當靶子了。 上周寫了 揭秘 bbr 以及 搶帶寬的原理&#xff0c;我對自己說&#xff0c;這都是理論上如何&#xff0c;可實際上呢。于是有必要結合更實際…

ubuntu cutecom串口調試工具使用方法(圖形界面)

文章目錄 Ubuntu下使用CuteCom進行串口調試使用指南什么是CuteCom&#xff1f;主要特點 安裝CuteCom使用APT包管理器從源碼編譯安裝 配置串口CuteCom界面解析&#xff08;啟動cutecom&#xff09;使用CuteCom進行數據發送和接收配置串口參數數據接收數據發送 高級功能和技巧流控…

Vatee萬騰的數字化掌舵:Vatee科技解決方案的全面引領

隨著數字化時代的到來&#xff0c;Vatee萬騰憑借其卓越的科技實力和全面的解決方案&#xff0c;成功地在數字化探索的航程中掌舵引領。 首先&#xff0c;Vatee萬騰以其強大的數字化科技實力成為行業的引領者。vatee萬騰不僅在人工智能、大數據分析、云計算等前沿領域取得了顯著…

PLC通過Modbus轉Profinet網關連接安華變頻器通訊控制電機案例

背景&#xff1a;近年來&#xff0c;隨著自動化技術的不斷進步&#xff0c;Modbus與Profinet之間的轉換成為了許多工廠和企業普遍關注的問題。 Modbus轉Profinet網關作為兩個不同協議設備連接的橋梁&#xff0c;安華變頻器作為一種電氣設備&#xff0c;能夠改變電源的頻率和電…

負載均衡lvs

簡介 ipvsadm 是 Linux 內核中的 IP 虛擬服務器&#xff08;IPVS&#xff09;管理工具。IPVS是 Linux 內核提供的一種負載均衡解決方案&#xff0c;它允許將入站的網絡流量分發到多個后端服務器&#xff0c;以實現負載均衡和高可用性。IPVS通過在內核中維護一個虛擬服務器表&a…

Pytorch中的tensor維度理解

Pytorch中的tensor維度理解 文章目錄 Pytorch中的tensor維度理解摘要打消心理恐懼&#xff0c;從三維學起三維tensor參考文獻 摘要 面對pytorch編程中的tensor時&#xff0c;我不時會感到恐懼。對里面數據是怎么排布的&#xff0c;一直沒有一個直觀的理解。今天我想把這個事情…

springboot(ssm中醫學習服務管理系統 醫學生在線學習平臺Java(codeLW)

springboot(ssm中醫學習服務管理系統 醫學生在線學習平臺Java(code&LW) 開發語言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服務器&#xff1a;tomcat 數據庫&#xff1a;mysql 5.7&#xff08;或…

基于VM虛擬機下Ubuntu18.04系統,Hadoop的安裝與詳細配置

參考博客&#xff1a; https://blog.csdn.net/duchenlong/article/details/114597944 與上面這個博客幾乎差不多&#xff0c;就是java環境配置以及后面的hadoop的hdfs-site.xml文件有一些不同的地方。 準備工作 1.更新 # 更新 sudo apt update sudo apt upgrade2.關閉防火…

MS2401隔離Σ-Δ調制器,可替代ADI的AD7401

產品簡述 MS2401 是一款二階 Σ-Δ 調制器&#xff0c;集成片上數字隔離器&#xff0c;能 將模擬輸入信號轉換為高速 1 位碼流。調制器對輸入信號連續 采樣&#xff0c;無需外部采樣保持電路。模擬信號輸入滿量程為 320 mV &#xff0c;轉換后的數字碼流的最高數據速率為 2…

C++ Boost Thread 編程總結

1.前言 標準C線程即將到來。CUJ預言它將衍生自Boost線程庫&#xff0c;現在就由Bill帶領我們探索一下Boost線程庫。 就在幾年前&#xff0c;用多線程執行程序還是一件非比尋常的事。然而今天互聯網應用服務程序普遍使用多線程來提高與多客戶鏈接時的效率&#xff1b;為了達到最…

統計voc格式數據中的xml標簽、bndbox到excel表格中

有這么個需求是將xml的內容: 1,filename 2.label 3.bndbox:xmin,xmax,ymin,ymax。 … 將這些東西寫入excel表格中,方便我統計標簽數量和框的分布! 于是撰寫了腳本:xml2csv.py 我的xml文件形式如下。大家的目標檢測格式大同小異! <annotation><folder>UAV_d…