#環境
golang
anaconda
#やったことと問題
twitter APIを使ったプログラムを動かしてしばらくすると、以下のエラーが出ます
Get https://api.twitter.com/1.1/friendships/create.json returned status 401, {"errors":[{"code":89,"message":"Invalid or expired token."}]}
これは、認証トークンの有効期限が切れるのが問題とありましたが、具体的にどう直せばいいのかわかりません...
例えば以下のコードは、片思いユーザー(こちらがフォローしているがフォローを返されていないユーザー)をリムーブするコードです
以前mattnさんに回答していただいたコードが入っています
go
1package main 2 3import ( 4 "github.com/ChimeraCoder/anaconda" 5 "time" 6 "fmt" 7 "log" 8) 9 10var api *anaconda.TwitterApi 11 12func main() { 13 api = createApi() 14 t := getRemoveTarget() 15 remove(t) 16} 17 18//getRemoveTargetでリスト化したユーザーを1秒間隔でリムーブ 19func remove(t []int64) { 20 for _, i := range t { 21 _, err := api.UnfollowUserId(i) 22 if err != nil { 23 fmt.Println(err) 24 break 25 } 26 time.Sleep(1000 * time.Millisecond) 27 } 28} 29 30//片思いを見つける 31func getRemoveTarget() []int64 { 32 f, err := api.GetFriendsIds(nil) 33 if err != nil { 34 log.Println(err) 35 } 36 37 fed, err := api.GetFollowersIds(nil) 38 if err != nil { 39 log.Println(err) 40 } 41 42 return filter(f.Ids, fed.Ids) 43} 44 45func filter(lhs, rhs []int64) []int64 { 46 m := map[int64]int{} 47 48 for _, v := range lhs { 49 if _, ok := m[v]; !ok { 50 m[v] = 1 51 } 52 } 53 54 for _, v := range rhs { 55 if _, ok := m[v]; ok { 56 m[v] = 2 57 } 58 } 59 60 var ret []int64 61 62 for i := range m { 63 if m[i] == 1 { 64 ret = append(ret, i) 65 } 66 } 67 return ret 68} 69 70//apiつくる 71func createApi() *anaconda.TwitterApi { 72 anaconda.SetConsumerKey("CK") 73 anaconda.SetConsumerSecret("CS") 74 api := anaconda.NewTwitterApi("AT", "AS") 75 return api 76}

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/01/10 03:22