unity5.5を使用しています。下記のプログラムはユーザーのホームタイムラインを表示するプログラムとして製作したもので
http://pepoipod.hatenablog.jp/entry/attack-sns-api-in-unity
このサイトのユーザーのタイムラインをコンソールに表示するプログラムをもとに作成しました。
ユーザータイムラインは取得できたのですが、ホームタイムラインは全く取得できずに困っています。
”since id”で最新のホームタイムラインを取得して過去20件のツイート情報をコンソールに表示するプログラムだと認識しているのですが、この考え方が間違っているのでしょうか?また、プログラムとしての欠陥があるようなのですがどこを直せばよいのでしょうか?よろしくお願いします。
C#
1public class AccessTokenResponse 2 { 3 public string Token { get; set; } 4 public string TokenSecret { get; set; } 5 public string UserId { get; set; } 6 public string ScreenName { get; set; } 7 } 8public delegate void GetHomeTimelineCallback(bool success, string response); 9 10 public static IEnumerator GetAccessToken(string consumerKey, string consumerSecret, string requestToken, string pin, AccessTokenCallback callback) 11 { 12 WWW web = WWWAccessToken(consumerKey, consumerSecret, requestToken, pin); 13 14 yield return web; 15 16 if (!string.IsNullOrEmpty(web.error)) 17 { 18 Debug.Log(string.Format("GetAccessToken - failed. error : {0}", web.error)); 19 callback(false, null); 20 } 21 else 22 { 23 AccessTokenResponse response = new AccessTokenResponse 24 { 25 Token = Regex.Match(web.text, @"oauth_token=([^&]+)").Groups[1].Value, 26 TokenSecret = Regex.Match(web.text, @"oauth_token_secret=([^&]+)").Groups[1].Value, 27 UserId = Regex.Match(web.text, @"user_id=([^&]+)").Groups[1].Value, 28 ScreenName = Regex.Match(web.text, @"screen_name=([^&]+)").Groups[1].Value 29 }; 30 31 if (!string.IsNullOrEmpty(response.Token) && 32 !string.IsNullOrEmpty(response.TokenSecret) && 33 !string.IsNullOrEmpty(response.UserId) && 34 !string.IsNullOrEmpty(response.ScreenName) 35 ) 36 { 37 callback(true, response); 38 } 39 else 40 { 41 Debug.Log(string.Format("GetAccessToken - failed. response : {0}", web.text)); 42 callback(false, null); 43 } 44 } 45 } 46 47 48//自分のホームタイムラインの取得 49 private const string GetHomeTimelineURL = "https://api.twitter.com/1.1/statuses/home_timeline.json"; 50 public static IEnumerator GetHomeTimeline(string user_id, string consumerKey, string consumerSecret, AccessTokenResponse response, GetHomeTimelineCallback callback) 51 { 52 byte[] dummmy = null; 53 string url = GetHomeTimelineURL; 54 55 Dictionary<string, string> parameters = new Dictionary<string, string>(); 56 parameters.Add("since_id", 1234.ToString()); 57 parameters.Add("count", 20.ToString()); 58 parameters.Add("exclude_replies", "false"); 59 60 url = BuildURL (url, parameters); 61 62 Dictionary<string, string> headers2 = new Dictionary<string, string>(); 63 headers2["Authorization"] = GetHeaderWithAccessToken("GET", url, consumerKey, consumerSecret, response, parameters); 64 65 WWW web = new WWW(url, dummmy, headers2); 66 yield return web; 67 68 if (!string.IsNullOrEmpty(web.error)) 69 { 70 Debug.Log(string.Format("GetHomeTimeline - failed. {0}\n{1}", web.error, web.text)); 71 callback(false, web.error); 72 } 73 else 74 { 75 string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value; 76 77 if (!string.IsNullOrEmpty(error)) 78 { 79 Debug.Log(string.Format("GetHomeTimeline - failed. {0}", error)); 80 callback(false, web.error); 81 } 82 else 83 { 84 callback(true, web.text); 85 } 86 } 87 } 88 89//ユーザのホームタイムライン表示するボタン 90 public void onClickHomeTimeLineDisplayButton(){ 91 StartCoroutine (Twitter.API.GetHomeTimeline (m_AccessTokenResponse.UserId, CONSUMER_KEY, CONSUMER_SECRET, m_AccessTokenResponse, 92 new Twitter.GetHomeTimelineCallback (this.OnGetHomeTimeline))); 93 } 94 95void OnGetHomeTimeline(bool success, string response) { 96 print ("GetHomeTimeline- " + (success ? "succedded." : "failed.")); 97 if (success) { 98 var json = JSON.Parse (response); 99 print (json); 100 } 101 }
あなたの回答
tips
プレビュー