如何使用Unity3D发布到Twitter?它总是抛出一个错误
我已经将G+和Facebook整合到了我的游戏中,但Twitter确实因为无论出于什么原因都很难设置而备受瞩目 首先,Twitter的网站上没有官方插件。他们的系统通过他们的网站进行身份验证,使用代码帮助验证登录和发布的用户。因为在互联网上没有人想做一个关于如何做这样一件事的教程,这实际上是最新的,所以我很困惑 我能找到的最好的东西就是资产商店中的这个插件,它是免费的,名为“让我们在Unity中Tweet” 我看到的每个人都有和我一样的问题,自动地说,哦,是的,这个插件工作,只要改变这个和这个,它就会工作!我确实改变了这个和那个,错误。我没有改变这个和那个,错误。我甚至阅读了描述,并使用了一些插件粉丝制作的“清理版”。错误 错误: 代码生成错误: 守则:如何使用Unity3D发布到Twitter?它总是抛出一个错误,twitter,plugins,unity3d,Twitter,Plugins,Unity3d,我已经将G+和Facebook整合到了我的游戏中,但Twitter确实因为无论出于什么原因都很难设置而备受瞩目 首先,Twitter的网站上没有官方插件。他们的系统通过他们的网站进行身份验证,使用代码帮助验证登录和发布的用户。因为在互联网上没有人想做一个关于如何做这样一件事的教程,这实际上是最新的,所以我很困惑 我能找到的最好的东西就是资产商店中的这个插件,它是免费的,名为“让我们在Unity中Tweet” 我看到的每个人都有和我一样的问题,自动地说,哦,是的,这个插件工作,只要改变这个和这个,
using Twitter;
using UnityEngine;
public class Demo : MonoBehaviour
{
// You need to save access token and secret for later use.
// You can keep using them whenever you need to access the user's Twitter account.
// They will be always valid until the user revokes the access to your application.
private const string PLAYER_PREFS_TWITTER_USER_ID = "";
private const string PLAYER_PREFS_TWITTER_USER_SCREEN_NAME = "TwitterUserScreenName";
private const string PLAYER_PREFS_TWITTER_USER_TOKEN = "";
private const string PLAYER_PREFS_TWITTER_USER_TOKEN_SECRET = "";
public string CONSUMER_KEY;
public string CONSUMER_SECRET;
public float PIN_ENTER_HEIGHT;
public float PIN_ENTER_WIDTH;
public float PIN_ENTER_X;
public float PIN_ENTER_Y;
public float PIN_INPUT_HEIGHT;
public float PIN_INPUT_WIDTH;
public float PIN_INPUT_X;
public float PIN_INPUT_Y;
public float POST_TWEET_HEIGHT;
public float POST_TWEET_WIDTH;
public float POST_TWEET_X;
public float POST_TWEET_Y;
public float TWEET_INPUT_HEIGHT;
public float TWEET_INPUT_WIDTH;
public float TWEET_INPUT_X;
public float TWEET_INPUT_Y;
public float USER_LOG_IN_HEIGHT;
public float USER_LOG_IN_WIDTH;
public float USER_LOG_IN_X;
public float USER_LOG_IN_Y;
private AccessTokenResponse m_AccessTokenResponse;
private string m_PIN = "Please enter your PIN here.";
private RequestTokenResponse m_RequestTokenResponse;
private string m_Tweet = "Please enter your tweet here.";
// Use this for initialization
private void Start()
{
LoadTwitterUserInfo();
}
// Update is called once per frame
private void Update()
{
}
// GUI
private void OnGUI()
{
// LogIn/Register Button
var rect = new Rect(Screen.width * USER_LOG_IN_X,
Screen.height * USER_LOG_IN_Y,
Screen.width * USER_LOG_IN_WIDTH,
Screen.height * USER_LOG_IN_HEIGHT);
if (string.IsNullOrEmpty(CONSUMER_KEY) || string.IsNullOrEmpty(CONSUMER_SECRET))
{
string text =
"You need to register your game or application first.\n Click this button, register and fill CONSUMER_KEY and CONSUMER_SECRET of Demo game object.";
if (GUI.Button(rect, text))
{
Application.OpenURL("http://dev.twitter.com/apps/new");
}
}
else
{
string text = string.Empty;
if (!string.IsNullOrEmpty(m_AccessTokenResponse.ScreenName))
{
text = m_AccessTokenResponse.ScreenName + "\nClick to register with a different Twitter account";
}
else
{
text = "You need to register your game or application first.";
}
if (GUI.Button(rect, text))
{
StartCoroutine(API.GetRequestToken(CONSUMER_KEY, CONSUMER_SECRET,
OnRequestTokenCallback));
}
}
// PIN Input
rect.x = Screen.width * PIN_INPUT_X;
rect.y = Screen.height * PIN_INPUT_Y;
rect.width = Screen.width * PIN_INPUT_WIDTH;
rect.height = Screen.height * PIN_INPUT_HEIGHT;
m_PIN = GUI.TextField(rect, m_PIN);
// PIN Enter Button
rect.x = Screen.width * PIN_ENTER_X;
rect.y = Screen.height * PIN_ENTER_Y;
rect.width = Screen.width * PIN_ENTER_WIDTH;
rect.height = Screen.height * PIN_ENTER_HEIGHT;
if (GUI.Button(rect, "Enter PIN"))
{
StartCoroutine(API.GetAccessToken(CONSUMER_KEY, CONSUMER_SECRET, m_RequestTokenResponse.Token, m_PIN,
OnAccessTokenCallback));
}
// Tweet Input
rect.x = Screen.width * TWEET_INPUT_X;
rect.y = Screen.height * TWEET_INPUT_Y;
rect.width = Screen.width * TWEET_INPUT_WIDTH;
rect.height = Screen.height * TWEET_INPUT_HEIGHT;
m_Tweet = GUI.TextField(rect, m_Tweet);
// Post Tweet Button
rect.x = Screen.width * POST_TWEET_X;
rect.y = Screen.height * POST_TWEET_Y;
rect.width = Screen.width * POST_TWEET_WIDTH;
rect.height = Screen.height * POST_TWEET_HEIGHT;
if (GUI.Button(rect, "Post Tweet"))
{
StartCoroutine(API.PostTweet(m_Tweet, CONSUMER_KEY, CONSUMER_SECRET, m_AccessTokenResponse,
OnPostTweet));
}
}
private void LoadTwitterUserInfo()
{
m_AccessTokenResponse = new AccessTokenResponse();
m_AccessTokenResponse.UserId = PlayerPrefs.GetString(PLAYER_PREFS_TWITTER_USER_ID);
m_AccessTokenResponse.ScreenName = PlayerPrefs.GetString(PLAYER_PREFS_TWITTER_USER_SCREEN_NAME);
m_AccessTokenResponse.Token = PlayerPrefs.GetString(PLAYER_PREFS_TWITTER_USER_TOKEN);
m_AccessTokenResponse.TokenSecret = PlayerPrefs.GetString(PLAYER_PREFS_TWITTER_USER_TOKEN_SECRET);
if (!string.IsNullOrEmpty(m_AccessTokenResponse.Token) &&
!string.IsNullOrEmpty(m_AccessTokenResponse.ScreenName) &&
!string.IsNullOrEmpty(m_AccessTokenResponse.Token) &&
!string.IsNullOrEmpty(m_AccessTokenResponse.TokenSecret))
{
string log = "LoadTwitterUserInfo - succeeded";
log += "\n UserId : " + m_AccessTokenResponse.UserId;
log += "\n ScreenName : " + m_AccessTokenResponse.ScreenName;
log += "\n Token : " + m_AccessTokenResponse.Token;
log += "\n TokenSecret : " + m_AccessTokenResponse.TokenSecret;
Debug.Log(log);
}
}
private void OnRequestTokenCallback(bool success, RequestTokenResponse response)
{
if (success)
{
string log = "OnRequestTokenCallback - succeeded";
log += "\n Token : " + response.Token;
log += "\n TokenSecret : " + response.TokenSecret;
print(log);
m_RequestTokenResponse = response;
API.OpenAuthorizationPage(response.Token);
}
else
{
print("OnRequestTokenCallback - failed.");
}
}
private void OnAccessTokenCallback(bool success, AccessTokenResponse response)
{
if (success)
{
string log = "OnAccessTokenCallback - succeeded";
log += "\n UserId : " + response.UserId;
log += "\n ScreenName : " + response.ScreenName;
log += "\n Token : " + response.Token;
log += "\n TokenSecret : " + response.TokenSecret;
print(log);
m_AccessTokenResponse = response;
PlayerPrefs.SetString(PLAYER_PREFS_TWITTER_USER_ID, response.UserId);
PlayerPrefs.SetString(PLAYER_PREFS_TWITTER_USER_SCREEN_NAME, response.ScreenName);
PlayerPrefs.SetString(PLAYER_PREFS_TWITTER_USER_TOKEN, response.Token);
PlayerPrefs.SetString(PLAYER_PREFS_TWITTER_USER_TOKEN_SECRET, response.TokenSecret);
}
else
{
print("OnAccessTokenCallback - failed.");
}
}
private void OnPostTweet(bool success)
{
print("OnPostTweet - " + (success ? "succedded." : "failed."));
}
}
我的目的是给玩家一个特别的分数,如果他们通过twitter分享,这意味着我还必须确认他们发布了一些东西,等等。如果你是使用插件打开的。我建议使用Soomla社交媒体插件。你可以在这里找到它: 在推特上更新状态只需在Soomla上打个简单的电话。见下文 SoomlaProfile.updateStore( Provider.TWITTER, “看看苏姆拉写的这个伟大的故事吧!”,
“苏姆拉才2岁!”, “苏姆拉正在成长”, “很快2年”, “someLink”, “someLink”,
新警徽奖励(“警长”、“警长”) 能否将代码添加到文本正文而不是代码的图像中?它使人们更容易测试您正在做什么,并帮助您解决问题;)我刚刚添加了它,但是出于某种原因StackOverflow不想在一个框中显示所有内容?我试过了。尽管如此,您需要使用编辑器中的代码格式化工具,正如我刚才的编辑一样-选择代码并单击。有一个预览窗口用于此目的。我设法将脚本修复到演示的程度,允许我从twitter网站获取“Pin”,但我必须复制它,返回应用程序,粘贴它,然后我才能发布帖子?我不明白。twitter不只是请求一个应用程序的授权,然后你就可以发布你想要的所有东西吗?我该怎么做?