public static IEnumerator PostTweet(string text, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback) { if (string.IsNullOrEmpty(text) || text.Length > 140) { Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text)); callback(false); } else { Dictionary <string, string> parameters = new Dictionary <string, string>(); parameters.Add("status", text); // Add data to the form to post. WWWForm form = new WWWForm(); form.AddField("status", text); // HTTP header Dictionary <string, string> headers = new Dictionary <string, string>(); headers["Authorization"] = GetHeaderWithAccessToken("POST", PostTweetURL, consumerKey, consumerSecret, response, parameters); WWW web = new WWW(PostTweetURL, form.data, headers); yield return(web); if (!string.IsNullOrEmpty(web.error)) { Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web.error, web.text)); callback(false); } else { string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value; if (!string.IsNullOrEmpty(error)) { Debug.Log(string.Format("PostTweet - failed. {0}", error)); callback(false); } else { callback(true); } Debug.Log("PostTweet - " + web.text); } } }
public static IEnumerator PostTweet(string text, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback) { if (string.IsNullOrEmpty(text) || text.Length > 140) { Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text)); callback(false); } else { Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters.Add("status", text); // Add data to the form to post. WWWForm form = new WWWForm(); form.AddField("status", text); // HTTP header var headers = new Hashtable(); headers["Authorization"] = GetHeaderWithAccessToken("POST", PostTweetURL, consumerKey, consumerSecret, response, parameters); WWW web = new WWW(PostTweetURL, form.data, headers); yield return web; if (!string.IsNullOrEmpty(web.error)) { Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web.error, web.text)); callback(false); } else { string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value; if (!string.IsNullOrEmpty(error)) { Debug.Log(string.Format("PostTweet - failed. {0}", error)); callback(false); } else { callback(true); } } } }
public static IEnumerator PostTweet(string text, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback) { if (string.IsNullOrEmpty(text) || text.Length > 140) { Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text)); callback(false); } else { string url = string.Format(PostTweetURL, UrlEncode(text)); Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters.Add("status", text); // Need to fill body since Unity doesn't like an empty request body. byte[] dummmy = new byte[1]; dummmy[0] = 0; // HTTP header Hashtable headers = new Hashtable(); headers["Authorization"] = GetHeaderWithAccessToken("POST", url, consumerKey, consumerSecret, response, parameters); WWW web = new WWW(url, dummmy, headers); yield return web; if (!string.IsNullOrEmpty(web.error)) { Debug.Log(string.Format("PostTweet - failed. {0}", web.error)); callback(false); } else { string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value; if (!string.IsNullOrEmpty(error)) { Debug.Log(string.Format("PostTweet - failed. {0}", error)); callback(false); } else { callback(true); } } } }
//ファイルパスから画像ツイート public static IEnumerator PostTweetWithMedia(string text, string imagePath, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback) { if (string.IsNullOrEmpty(text) || text.Length > 140) { Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text)); callback(false); } else { FileStream fileStream = new FileStream(imagePath, FileMode.Open, FileAccess.Read); BinaryReader bin = new BinaryReader(fileStream); byte[] bytes = bin.ReadBytes((int)bin.BaseStream.Length); var bs64 = Convert.ToBase64String(bytes); bin.Close(); Dictionary <string, string> mediaParameters = new Dictionary <string, string> { { "media_data", bs64 } }; WWWForm mediaForm = new WWWForm(); mediaForm.AddField("media_data", bs64); var mediaHeaders = new Dictionary <string, string>(); mediaHeaders.Add("Authorization", GetHeaderWithAccessToken("POST", UploadMediaURL, consumerKey, consumerSecret, response, mediaParameters)); WWW mediaWeb = new WWW(UploadMediaURL, mediaForm.data, mediaHeaders); yield return(mediaWeb); string media_id_string = ""; if (!string.IsNullOrEmpty(mediaWeb.error)) { Debug.Log(string.Format("PostMedia - failed. {0}\n{1}", mediaWeb.error, mediaWeb.text)); callback(false); yield break; } else { string error = Regex.Match(mediaWeb.text, @"<error>([^&]+)</error>").Groups[1].Value; if (!string.IsNullOrEmpty(error)) { Debug.Log(string.Format("PostTweet - failed. {0}", error)); callback(false); yield break; } else { var res = JsonUtility.FromJson <mediaResponse>(mediaWeb.text); media_id_string = res.media_id_string; } } Dictionary <string, string> parameters = new Dictionary <string, string> { { "status", text }, { "media_ids", media_id_string } }; WWWForm form = new WWWForm(); form.AddField("status", text); form.AddField("media_ids", media_id_string); // HTTP header var headers = new Dictionary <string, string>(); headers.Add("Authorization", GetHeaderWithAccessToken("POST", PostTweetURL, consumerKey, consumerSecret, response, parameters)); WWW web = new WWW(PostTweetURL, form.data, headers); yield return(web); if (!string.IsNullOrEmpty(web.error)) { Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web.error, web.text)); callback(false); } else { string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value; if (!string.IsNullOrEmpty(error)) { Debug.Log(string.Format("PostTweet - failed. {0}", error)); callback(false); } else { callback(true); } } } }
//Spriteから変換して画像ツイート public static IEnumerator PostTweetWithMedia(string _text, Sprite _sprite, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback) { if (string.IsNullOrEmpty(_text) || _text.Length > 140) { Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", _text)); callback(false); } else { Texture2D readableTexture = new Texture2D((int)_sprite.rect.width, (int)_sprite.rect.height); readableTexture.ReadPixels(_sprite.textureRect, 0, 0); var pixels = _sprite.texture.GetPixels((int)_sprite.textureRect.x, (int)_sprite.textureRect.y, (int)_sprite.textureRect.width, (int)_sprite.textureRect.height); readableTexture.SetPixels(pixels); readableTexture.Apply(); byte[] bytes = readableTexture.EncodeToPNG(); var bs64 = Convert.ToBase64String(bytes); Dictionary <string, string> mediaParameters = new Dictionary <string, string> { { "media_data", bs64 } }; WWWForm mediaForm = new WWWForm(); mediaForm.AddField("media_data", bs64); var mediaHeaders = new Dictionary <string, string>(); mediaHeaders.Add("Authorization", GetHeaderWithAccessToken("POST", UploadMediaURL, consumerKey, consumerSecret, response, mediaParameters)); WWW mediaWeb = new WWW(UploadMediaURL, mediaForm.data, mediaHeaders); yield return(mediaWeb); string media_id_string = ""; if (!string.IsNullOrEmpty(mediaWeb.error)) { Debug.Log(string.Format("PostMedia - failed. {0}\n{1}", mediaWeb.error, mediaWeb.text)); callback(false); yield break; } else { string error = Regex.Match(mediaWeb.text, @"<error>([^&]+)</error>").Groups[1].Value; if (!string.IsNullOrEmpty(error)) { Debug.Log(string.Format("PostTweet - failed. {0}", error)); callback(false); yield break; } else { var res = JsonUtility.FromJson <mediaResponse>(mediaWeb.text); media_id_string = res.media_id_string; } } Dictionary <string, string> parameters = new Dictionary <string, string> { { "status", _text }, { "media_ids", media_id_string } }; WWWForm form = new WWWForm(); form.AddField("status", _text); form.AddField("media_ids", media_id_string); // HTTP header var headers = new Dictionary <string, string>(); headers.Add("Authorization", GetHeaderWithAccessToken("POST", PostTweetURL, consumerKey, consumerSecret, response, parameters)); WWW web = new WWW(PostTweetURL, form.data, headers); yield return(web); if (!string.IsNullOrEmpty(web.error)) { Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web.error, web.text)); callback(false); } else { string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value; if (!string.IsNullOrEmpty(error)) { Debug.Log(string.Format("PostTweet - failed. {0}", error)); callback(false); } else { callback(true); } } } }
public static IEnumerator PostTweet(string text, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback) { return(PostTweet(text, "", consumerKey, response, callback)); }
public static IEnumerator PostTweet(byte[] imageInBytes, string consumerKey, string consumerSecret, string accessToken, string accessTokenSecret, PostTweetCallback callback) { if (imageInBytes.Length == 0) { callback(false); } else { Dictionary <string, string> parameters = new Dictionary <string, string>(); string encoded64ImageData = System.Convert.ToBase64String(imageInBytes); parameters.Add("media_data", encoded64ImageData); // Add data to the form to post. WWWForm form = new WWWForm(); form.AddField("media_data", encoded64ImageData); // HTTP header var headers = new Dictionary <string, string>(); headers["Authorization"] = GetHeaderWithAccessToken("POST", UploadMediaURL, consumerKey, consumerSecret, accessToken, accessTokenSecret, parameters); headers["Content-Transfer-Encoding"] = "base64"; WWW web = new WWW(UploadMediaURL, form.data, headers); yield return(web); if (!string.IsNullOrEmpty(web.error)) { Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web.error, web.text)); callback(false); } else { string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value; if (!string.IsNullOrEmpty(error)) { Debug.Log(string.Format("PostTweet - failed. {0}", error)); callback(false); } else { callback(true); // NOW THAT MEDIA IS UPLOADED, TWEET WITH THE ASSOCIATED MEDIA ID string parsedMediaID = web.text.Substring(12, 18); string tweetString = "What a beautiful bonsai~"; parameters = new Dictionary <string, string>(); parameters.Add("status", tweetString); parameters.Add("media_ids", parsedMediaID); // Add data to the form to post. form = new WWWForm(); form.AddField("status", tweetString); form.AddField("media_ids", parsedMediaID); // HTTP header headers = new Dictionary <string, string>(); headers["Authorization"] = GetHeaderWithAccessToken("POST", PostTweetURL, consumerKey, consumerSecret, accessToken, accessTokenSecret, parameters); WWW web2 = new WWW(PostTweetURL, form.data, headers); yield return(web2); if (!string.IsNullOrEmpty(web2.error)) { Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web2.error, web2.text)); callback(false); } else { error = Regex.Match(web2.text, @"<error>([^&]+)</error>").Groups[1].Value; if (!string.IsNullOrEmpty(error)) { Debug.Log(string.Format("PostTweet - failed. {0}", error)); callback(false); } else { callback(true); // Now that the image is uploaded, we need to send a tweet and incorporate the image ID... } } } } } }
public static IEnumerator PostTweet(string text, string mediaString, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback) { if (string.IsNullOrEmpty(text) || text.Length > 140) { Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text)); callback(false); } else { Debug.Log("media string>>" + mediaString); Dictionary <string, string> mediaParameters = new Dictionary <string, string>(); mediaParameters.Add("status", text); mediaParameters.Add("media_data", mediaString); // Add data to the form to post. WWWForm mediaForm = new WWWForm(); mediaForm.AddField("media_data", mediaString); mediaForm.AddField("status", text); //Debug.Log (System.Convert.ToBase64String (File.ReadAllBytes (filePath))); string UploadMediaURL = "https://upload.twitter.com/1.1/media/upload.json"; // HTTP header Dictionary <string, string> mediaHeaders = new Dictionary <string, string>(); string url = UploadMediaURL; string auth = GetHeaderWithAccessToken("POST", UploadMediaURL, consumerKey, consumerSecret, response, mediaParameters); mediaHeaders.Add("Authorization", auth); mediaHeaders.Add("Content-Transfer-Encoding", "base64"); WWW mw = new WWW(UploadMediaURL, mediaForm.data, mediaHeaders); yield return(mw); string mID = Regex.Match(mw.text, @"(\Dmedia_id\D\W)(\d*)").Groups[2].Value; Debug.Log("response from media request : " + mw.text); Debug.Log("mID = " + mID); if (!string.IsNullOrEmpty(mw.error)) { Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", mw.error, mw.text)); callback(false); } else { string error = Regex.Match(mw.text, @"<error>([^&]+)</error>").Groups[1].Value; if (!string.IsNullOrEmpty(error)) { Debug.Log(string.Format("PostTweet - failed. {0}", error)); callback(false); } else { callback(true); } } Dictionary <string, string> parameters = new Dictionary <string, string>(); parameters.Add("status", text); parameters.Add("media_ids", mID); // Add data to the form to post. WWWForm form = new WWWForm(); form.AddField("status", text); form.AddField("media_ids", mID); // HTTP header var headers = new Dictionary <string, string>(); headers["Authorization"] = GetHeaderWithAccessToken("POST", PostTweetURL, consumerKey, consumerSecret, response, parameters); WWW web = new WWW(PostTweetURL, form.data, headers); yield return(web); if (!string.IsNullOrEmpty(web.error)) { Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web.error, web.text)); callback(false); } else { string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value; if (!string.IsNullOrEmpty(error)) { Debug.Log(string.Format("PostTweet - failed. {0}", error)); callback(false); } else { callback(true); } } } }
public static IEnumerator PostImageTweet(string text, byte[] image, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback) { if (string.IsNullOrEmpty(text) || text.Length > 140) { Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text)); callback(false); } else if (image == null || image.Length == 0) { Debug.Log("Missing image."); callback(false); } else { Dictionary<string, string> parameters = new Dictionary<string, string>(); var form = new WWWForm(); form.AddBinaryData("status", UTF8Encoding.UTF8.GetBytes(text)); form.AddBinaryData("media[]", image, "anuki.jpg", "application/octet-stream"); var request = new HTTP.Request(PostImageTweetURL, form); request.headers.Add("Authorization", GetHeaderWithAccessToken("POST", PostImageTweetURL, consumerKey, consumerSecret, response, parameters)); yield return request.Send(); if (request.exception != null) { Debug.Log(string.Format("PostImageTweet - failed:\n" + request.exception.Message)); callback(false); } else { var txt = request.response.Text; if (txt.Contains("\"errors\":")) { Debug.Log(string.Format("PostImageTweet - failed. {0}", txt)); callback(false); } else { Debug.Log("Response: " + txt); callback(true); } } } }
// Token: 0x06002F3E RID: 12094 RVA: 0x000E51BC File Offset: 0x000E35BC public static IEnumerator PostTweet(string text, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback) { if (string.IsNullOrEmpty(text) || text.Length > 140) { Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text)); callback(false); } else { Dictionary <string, string> parameters = new Dictionary <string, string>(); parameters.Add("status", text); WWWForm form = new WWWForm(); form.AddField("status", text); Dictionary <string, string> headers = new Dictionary <string, string>(); headers["Authorization"] = API.GetHeaderWithAccessToken("POST", "https://api.twitter.com/1.1/statuses/update.json", consumerKey, consumerSecret, response, parameters); WWW web = new WWW("https://api.twitter.com/1.1/statuses/update.json", form.data, headers); yield return(web); if (!string.IsNullOrEmpty(web.error)) { Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web.error, web.text)); callback(false); } else { string value = Regex.Match(web.text, "<error>([^&]+)</error>").Groups[1].Value; if (!string.IsNullOrEmpty(value)) { Debug.Log(string.Format("PostTweet - failed. {0}", value)); callback(false); } else { callback(true); } } } yield break; }
public static IEnumerator PostTweet(string text, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback) { if (string.IsNullOrEmpty(text) || text.Length > 140) { Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text)); callback(false); } else { string url = string.Format(PostTweetURL, UrlEncode(text)); Dictionary <string, string> parameters = new Dictionary <string, string>(); parameters.Add("status", text); // Need to fill body since Unity doesn't like an empty request body. byte[] dummmy = new byte[1]; dummmy[0] = 0; // HTTP header Hashtable headers = new Hashtable(); headers["Authorization"] = GetHeaderWithAccessToken("POST", url, consumerKey, consumerSecret, response, parameters); WWW web = new WWW(url, dummmy, headers); yield return(web); if (!string.IsNullOrEmpty(web.error)) { Debug.Log(string.Format("PostTweet - failed. {0}", web.error)); callback(false); } else { string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value; if (!string.IsNullOrEmpty(error)) { Debug.Log(string.Format("PostTweet - failed. {0}", error)); callback(false); } else { callback(true); } } } }
public static IEnumerator PostTweet(string text, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback) { if (string.IsNullOrEmpty(text) || text.Length > 140) { Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text)); callback(false); } else { Dictionary <string, string> parameters = new Dictionary <string, string>(); parameters.Add("status", text); // Add data to the form to post. WWWForm form = new WWWForm(); form.AddField("status", text); // HTTP header Dictionary <string, string> headers = new Dictionary <string, string>(); headers.Add("Authorization", GetHeaderWithAccessToken("POST", PostTweetURL, consumerKey, consumerSecret, response, parameters)); //var headers = new Hashtable(); //headers["Authorization"] = GetHeaderWithAccessToken("POST", PostTweetURL, consumerKey, consumerSecret, response, parameters); string method = form.data == null ? "GET" : "POST"; UnityWebRequest web = new UnityWebRequest(PostTweetURL, method) { downloadHandler = new DownloadHandlerBuffer() }; foreach (KeyValuePair <string, string> header in headers) { web.SetRequestHeader(header.Key, header.Value); } yield return(web); if (!string.IsNullOrEmpty(web.error)) { Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web.error, web.downloadHandler.text)); callback(false); } else { string error = Regex.Match(web.downloadHandler.text, @"<error>([^&]+)</error>").Groups[1].Value; if (!string.IsNullOrEmpty(error)) { Debug.Log(string.Format("PostTweet - failed. {0}", error)); callback(false); } else { callback(true); } } } }