# Camiol:在twitter上面新增機器人 **Step 1: 先在twitter上面新增機器人** **在twitter開發者模式這邊登入自己的twitter帳號** https://developer.twitter.com/ **在sign in登入後,回到** https://developer.twitter.com/ **就會看到我們的頭像,然後點選sign up報名**  **之後把相關資料填完後,這邊選擇no,然後按下Next**  **然後將下面的選項勾起來,然後按submit送出**  **然後他會寄信到你的信箱,這時要去收信後認證郵件**  **收到信後按下確認email**  **就可以正式開始創立我們的twitter機器人了**  取好名字後,按下Get Keys  **將左邊的三種key和token都記錄下來到安全的地方,按下Test an endpoint**  **最後再次確認,按下I saved them,即可完成**  **重新回到開發者頁面,選擇Developer Potal**  **就可以看到我們的開發畫面**  **再來要新增OAuth1.0a 來達到讓twitter可以讀寫的權限**  **設定打開OAuth1.0a**  **選擇Read And Write 這樣就可以在twitter讀取和發文**  **twitter會想要了解你的機器人所做的事情,最後可以歸咎於哪邊來的,所以要填入個人網站(必填)。填完後按Save送出**  接著設定Keys和token  **這時我們要再建立一組Access Token and Secret用來做存取的權限, 沒有建立過的話就按下generate, 有建立過但忘記token的話就按下Regenerate**  **一樣把Access Token 和Access Token Secret記錄下來,等等會用到,然後按下確定建立。**  **再來回到開發者模式首頁,我們要來升級我們權限,才可以發文到推特,按下Apply for elevated**  **把必填欄位全部填完後,按下Next**  **再來要認真的寫,為什麼需要升級權限,把每題認真的用英文寫完後,按下Next**  **打勾後,按下Submit**  **就可以看到我們的機器人權限升級啦!!**  **這裡附上對照表,升級權限前後的差別**  **設定好後我們再來就要開始寫程式了!** --- **Step2 : 在java上建立twitter4j程式來連接機器人** **在專案的POM檔加入twitter4j-core的dependency** ```=\ <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <t4j.version>4.0.7</t4j.version> </properties> <dependencies> <dependency> <groupId>org.twitter4j</groupId> <artifactId>twitter4j-core</artifactId> <version>${t4j.version}</version> </dependency> </dependencies> ``` **接著在專案下面建立twitter4j.properties設定檔** ```=\ debug=true oauth.consumerKey= oauth.consumerSecret= oauth.accessToken= oauth.accessTokenSecret= ``` **分別填入我們創立twitter robot時的那四個key and token** consumerKey就是API key consumerSecret就是API Key Secret **Bearer Token是給OAuth2.0用的** 建立一個class, 並且準備一個txt檔放在專案下面,來測試發文功能 ```java=\ package camiol.twitter.news.robot; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.Charset; import twitter4j.Status; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; public class TweetPostRobot { public static void main(String[] args) { tweetQuotes(); } private static void tweetQuotes() { String line; try { InputStream fis = new FileInputStream(new File("tweet.txt")); InputStreamReader isr = new InputStreamReader(fis, Charset.forName("UTF-8")); BufferedReader br = new BufferedReader(isr); while ((line = br.readLine()) != null) { sendTweetAPI(line); System.out.println("Tweeting: " + line + "..."); // try { // System.out.println("Sleeping for 30 minutes..."); // Thread.sleep(1800000); // every 30 minutes // } catch (InterruptedException e) { // e.printStackTrace(); // } } } catch (IOException e) { e.printStackTrace(); } } private static void sendTweetAPI(String line) { try { Twitter twitter = new TwitterFactory().getInstance(); Status status; status = twitter.updateStatus(line); System.out.println(status); } catch (TwitterException te) { te.printStackTrace(); System.out.println("Failed to get timeline: " + te.getMessage()); System.exit(-1); } } } ``` **按下Run as > Java application後,可以看到console已成功送出推文**  **回到Twitter就可以看到我們的推文啦~**  [twiiter4j javadoc 參考文件](https://twitter4j.org/javadoc/index.html) ###### tags: `Java` `Twitter`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up