• 党建第一责任与发展第一要务相融合br全面提升机关党建工作水平 2019-05-22
  • 卡纳瓦罗:对比赛结果不满意 晋级机会各占一半 2019-05-22
  • 天津宣讲十九大:津沽大地舞春风,小康路上添豪情 2019-05-21
  • 酱香酒为什么要在端午时节制曲微生物 酒曲 2019-05-20
  • 回复@艾鸣1:你看强坛除了小寻子这种跟你一样老蚕的人之外,有人会有人敢支持你么? 2019-05-15
  • 中国经济稳中向好的发展态势没有变 2019-05-14
  • 私扫码付不加控制党政和人行国有银行国有企业自动退出历史舞台 2019-05-11
  • 你真没一点脑子,文字是哪个人的,你到说说啊 2019-05-04
  • 黎明华丽转身成监制 他给四川金丝猴拍了部动画片 2019-05-04
  • 候选案例:爱在华住滇西北宿改工程 2019-05-02
  • 山西寿阳:竹马戏演员的台前幕后 2019-04-26
  • 96次航拍峨眉 换个角度看巴蜀名山 中国国家地理网 2019-04-23
  • 俄罗斯电影《最后一球》定档落魄球星遇上菜鸟球队 2019-04-21
  • 【理上网来·辉煌十九大】缅甸资深媒体人高度评价习近平十九大报告:立意高远 内涵丰富 2019-04-21
  • 特朗普和金正恩先后抵达嘉佩乐酒店 会晤即将开始 2019-04-17
  • 福建体彩31选七走势图: Unity教程 如何通过Unity iOS应用程序在Twitter上分享图片和链接

    28
    回复
    6066
    查看
    打印 上一主题 下一主题
    [ 复制链接 ]
    排名
    9775
    昨日变化

    福建36选7和值走势图 www.00-na.com 263

    主题

    301

    帖子

    1602

    积分

    Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

    UID
    159865
    好友
    9
    蛮牛币
    3981
    威望
    0
    注册时间
    2016-8-1
    在线时间
    626 小时
    最后登录
    2018-3-8

    蛮牛译员

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    您需要 登录 才可以下载或查看,没有帐号?注册帐号

    x
    本帖最后由 manew_JR 于 2017-9-20 13:53 编辑

    如何通过Unity iOS应用程序在Twitter上分享图片和链接



    游戏引擎和游戏开发方面,Unity这一技术看起来是不可多得的,因为它不仅是最受欢迎和强大的游戏引擎,它具有用于开发iOS和游戏的优秀视觉编辑器,同时也具有很多功能,功能和社区的问题处理以及良好的定价选项。 毫无疑问,Unity被认为是最好的构建iOS和Android游戏和应用程序的引擎。


    今天在本教程中,我正在分享一个与iOS应用程序相关的主题,帮助您轻松地从应用程序分享图片或链接到twitter。 而分享图像不是一项重大任务,而是包含iOS,用户必须首先上传图像或先在设备路径上写入图像,然后从该路径读取图像,因为iOS中不存在资源文件夹。 所以借助下面的代码,您可以轻松地将图像读取和写入设备路径。


    让我们看看如何实现:
    首先在Twitter上创建一个应用程序,并保存应用程序的消费者密钥,秘密密钥,媒体URL和Tweet URL。
    那么为了在Twitter上分享,用户必须在Twitter上登录。 所以让我们使用下面提到的代码登录用户。


    现在,我们创建三个UI按钮。
    1.Twitter登录按钮//点击TwitterLogin
    2.提交Pin Button //点击SubmitPin()
    3.Twitter分享按钮//在点击中调用Twitter()。
    并创建一个InputField来输入您在调用TwittterLogin()函数后收到的PIN码。

    1. InputFieldPin

    启动Twitter登录按钮。 然后成功禁用登录按钮并启用输入框并提交按钮。 然后在成功登录后,启用“共享”按钮并禁用所有其他按钮


    现在创建两个脚本:
    TwitterHandller和
    Twitter



    #TwitterHandller.cs
    [C#] 纯文本查看 复制代码
    using UnityEngine;
    using UnityEngine.UI;
    using System.Collections;
    using System;
    using System.IO;
    using System.Net;
    using System.Xml;
    using System.Collections.Generic;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.Globalization;
    using System.Linq;
    using System.Security.Cryptography;
    using UnityEngine;
    using SimpleJSON;
    using System.Runtime.InteropServices;
    public class TwitterHandller: MonoBehaviour
    {
         Twitter.RequestTokenResponse m_RequestTokenResponse;
     
        Twitter.AccessTokenResponse m_AccessTokenResponse;
        public string CONSUMER_KEY;//Put oun consumer key here
     
         public string CONSUMER_SECRET;//Put own consumer secret here
        // Use this for initialization
        
        void Start()
        {
                LoadUserTwitterInfo();
         }
      void LoadUserTwitterInfo()
        {
               m_AccessTokenResponse = new Twitter.AccessTokenResponse();                    
               m_AccessTokenResponse.UserId =          PlayerPrefs.GetString(PLAYER_PREFS_TWITTER_USER_ID);
     
               m_AccessTokenResponse.ScreenName =  PlayerPrefs.GetStrin(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);
                //Debug.Log ("ID"+m_AccessTokenResponse.UserId );
            
               // Debug.Log ("Name"+m_AccessTokenResponse.ScreenName );
        
              // Debug.Log ("Token"+m_AccessTokenResponse.Token );
        
              // Debug.Log ("Token Secret"+m_AccessTokenResponse.TokenSecret );
     
               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;
        
                     print(log);
                 }
     
          }
    public void TwitterLogin()
    { 
        //Calling GetRequestToken function of Twitter API use your own consumer key and consumer secret.
         StartCoroutine(Twitter.API.GetRequestToken(CONSUMER_KEY, CONSUMER_SECRET,
                                                               new  Twitter.RequestTokenCallback(this.OnRequestTokenCallback)));
    }
    public void  SubmitPin()
    {
       StartCoroutine(Twitter.API.GetAccessToken(CONSUMER_KEY, CONSUMER_SECRET, m_RequestTokenResponse.Token, m_PIN,
                               new Twitter.AccessTokenCallback(this.OnAccessTokenCallback)));
    }
    public void TwitterShare()
    {
    //put url of the image that you want to share
             string url="https://is1-ssl.mzstatic.com/image/thumb/Purple128/v4/8e/d7/e9         /8ed7e940-9fda-d1ca-995e-d4e2086a438c/pr_source.jpg/150x150bb.jpg";
            string savePath = Path.Combine(Application.persistentDataPath, "data");
    //downloading image from url and saving to path
            downloadImage(url, savePath);
    //loading image from the path in byte array
            byte[] imageBytes = loadImage(savePath);
    //Calling PostTweet  function of  Twitter   API
    StartCoroutine(Twitter.API.PostTweet(imageBytes,m_Tweet,CONSUMER_KEY,CONSUMER_SECRET,     m_AccessTokenResponse,  new Twitter.PostTweetCallback(this.OnPostTweet)));
    }
    }


    #Twitter.cs
    [C#] 纯文本查看 复制代码
    using System;
    using System.IO;
    using System.Net;
    using System.Xml;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;
    using System.Text.RegularExpressions;
    using System.Globalization;
    using System.Linq;
    using System.Security.Cryptography;
    using UnityEngine;
    using SimpleJSON;
    using System.IO;
    using System.Runtime.InteropServices;
    namespace Twitter
    {
        
       
        public class RequestTokenResponse
        {
            public string Token { get; set; }
            public string TokenSecret { get; set; }
        }
        public class AccessTokenResponse
        {
            public string Token { get; set; }
            public string TokenSecret { get; set; }
            public string UserId { get; set; }
            public string ScreenName { get; set; }
        }
        public delegate void RequestTokenCallback(bool success, RequestTokenResponse response);
        public delegate void AccessTokenCallback(bool success, AccessTokenResponse response);
        public delegate void PostTweetCallback(bool success);
        public delegate void GetTimelineCallback(bool success);
     
        public class API
        {
            #region OAuth Token Methods
            // 1. Get Request-Token From Twitter
            // 2. Get PIN from User
            // 3. Get Access-Token from Twitter
            // 4. Use Accss-Token for APIs requriring OAuth
            // Accss-Token will be always valid until the user revokes the access to your application.
            // Twitter APIs for OAuth process
            private static readonly string RequestTokenURL = "https://api.twitter.com/oauth/request_token";
            private static readonly string AuthorizationURL = "https://api.twitter.com/oauth/authenticate?oauth_token={0}";
            private static readonly string AccessTokenURL = "https://api.twitter.com/oauth/access_token";
            public static IEnumerator GetRequestToken(string consumerKey, string consumerSecret, RequestTokenCallback callback)
            {
                WWW web = WWWRequestToken(consumerKey, consumerSecret);
                yield return web;
                if (!string.IsNullOrEmpty(web.error))
                {
                    Debug.Log(string.Format("GetRequestToken - failed. error : {0}", web.error));
                    callback(false, null);
                }
                else
                {
                    RequestTokenResponse response = new RequestTokenResponse
                    {
                        Token = Regex.Match(web.text, @"oauth_token=([^&]+)").Groups[1].Value,
                        TokenSecret = Regex.Match(web.text, @"oauth_token_secret=([^&]+)").Groups[1].Value,
                    };
                    if (!string.IsNullOrEmpty(response.Token) &&
                        !string.IsNullOrEmpty(response.TokenSecret))
                    {
                        callback(true, response);
                    }
                    else
                    {
                        Debug.Log(string.Format("GetRequestToken - failed. response : {0}", web.text));
                        callback(false, null);
                    }
                }
            }
            public static void OpenAuthorizationPage(string requestToken)
            {
                Application.OpenURL(string.Format(AuthorizationURL, requestToken));
            }
            public static IEnumerator GetAccessToken(string consumerKey, string consumerSecret, string requestToken, string pin, AccessTokenCallback callback)
            {
                Debug.Log ("GetAccessToken");
                WWW web = WWWAccessToken(consumerKey, consumerSecret, requestToken, pin);
                yield return web;
                if (!string.IsNullOrEmpty(web.error))
                {
                    Debug.Log(string.Format("GetAccessToken - failed. error : {0}", web.error));
                    callback(false, null);
                }
                else
                {
                    AccessTokenResponse response = new AccessTokenResponse
                    {
                        Token = Regex.Match(web.text, @"oauth_token=([^&]+)").Groups[1].Value,
                        TokenSecret = Regex.Match(web.text, @"oauth_token_secret=([^&]+)").Groups[1].Value,
                        UserId = Regex.Match(web.text, @"user_id=([^&]+)").Groups[1].Value,
                        ScreenName = Regex.Match(web.text, @"screen_name=([^&]+)").Groups[1].Value
                    };
                    if (!string.IsNullOrEmpty(response.Token) &&
                        !string.IsNullOrEmpty(response.TokenSecret) &&
                        !string.IsNullOrEmpty(response.UserId) &&
                        !string.IsNullOrEmpty(response.ScreenName))
                    {
                        callback(true, response);
                    }
                    else
                    {
                        Debug.Log(string.Format("GetAccessToken - failed. response : {0}", web.text));
                        callback(false, null);
                    }
                }
            }
            private static WWW WWWRequestToken(string consumerKey, string consumerSecret)
            {
                // Add data to the form to post.
                WWWForm form = new WWWForm();
                form.AddField("oauth_callback", "oob");
                // HTTP header
                Dictionary<string, string> parameters = new Dictionary<string, string>();
                AddDefaultOAuthParams(parameters, consumerKey, consumerSecret);
                parameters.Add("oauth_callback", "oob");
                Dictionary<string, string> headers = new Dictionary<string, string>();
                headers["Authorization"] = GetFinalOAuthHeader("POST", RequestTokenURL, parameters);
                return new WWW(RequestTokenURL, form.data, headers);
            }
            private static WWW WWWAccessToken(string consumerKey, string consumerSecret, string requestToken, string pin)
            {
                // Need to fill body since Unity doesn't like an empty request body.
                byte[] dummmy = new byte[1];
                dummmy[0] = 0;
                // HTTP header
                Dictionary<string, string> headers = new Dictionary<string, string>();
                Dictionary<string, string> parameters = new Dictionary<string, string>();
                AddDefaultOAuthParams(parameters, consumerKey, consumerSecret);
                parameters.Add("oauth_token", requestToken);
                parameters.Add("oauth_verifier", pin);
                headers["Authorization"] = GetFinalOAuthHeader("POST", AccessTokenURL, parameters);
                return new WWW(AccessTokenURL, dummmy, headers);
            }
            private static string GetHeaderWithAccessToken(string httpRequestType, string apiURL, string consumerKey, string consumerSecret, AccessTokenResponse response, Dictionary<string, string> parameters)
            {
                AddDefaultOAuthParams(parameters, consumerKey, consumerSecret);
                parameters.Add("oauth_token", response.Token);
                parameters.Add("oauth_token_secret", response.TokenSecret);
                return GetFinalOAuthHeader(httpRequestType, apiURL, parameters);
            }
            #endregion
    #region Twitter API Methods
           
            private const string PostTweetURL = "https://api.twitter.com/1.1/statuses/update.json";
      private const string GetTimelineURL = "https://api.twitter.com/1.1/statuses/home_timeline.json";
     private const string UploadMediaURL = "https://upload.twitter.com/1.1/media/upload.json";
    public static IEnumerator PostTweet(byte[] imageBytes, string text, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback)
            {
                Dictionary<string, string> mediaParameters = new Dictionary<string, string>();
                string encoded64ImageData = Convert.ToBase64String(imageBytes);
                mediaParameters.Add("media_data", encoded64ImageData);
                // Add data to the form to post.
                WWWForm mediaForm = new WWWForm();
                mediaForm.AddField("media_data", encoded64ImageData);
                // HTTP header
                Dictionary<string, string> mediaHeaders = new Dictionary<string, string>();
                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);
                    }
                }
                string url="https://is1-ssl.mzstatic.com/image/thumb/Purple128/v4/8e/d7/e9/8ed7e940-9fda-d1ca-995e-d4e2086a438c/pr_source.jpg/150x150bb.jpg";
                Dictionary<string, string> parameters = new Dictionary<string, string>();
                parameters.Add("status", url);
                parameters.Add("media_ids", mID);
                //parameters.Add("url", url);
                // Add data to the form to post.
                WWWForm form = new WWWForm();
                form.AddField("status", url);
                form.AddField("media_ids", mID);
                //form.AddField("url", url);
                // 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);
                    }
                }
            }
     #endregion
     #region OAuth Help Methods
      private static readonly string[] OAuthParametersToIncludeInHeader = new[]
                                                              {
                                                                  "oauth_version",
                                                                  "oauth_nonce",
                                                                  "oauth_timestamp",
                                                                  "oauth_signature_method",
                                                                  "oauth_consumer_key",
                                                                  "oauth_token",
                                                                  "oauth_verifier"
                                                                  // Leave signature omitted from the list, it is added manually
                                                                  // "oauth_signature",
                                                              };
            private static readonly string[] SecretParameters = new[]
                                                                    {
                                                                        "oauth_consumer_secret",
                                                                        "oauth_token_secret",
                                                                        "oauth_signature"
                                                                    };
            private static void AddDefaultOAuthParams(Dictionary<string, string> parameters, string consumerKey, string consumerSecret)
            {
                parameters.Add("oauth_version", "1.0");
                parameters.Add("oauth_nonce", GenerateNonce());
                parameters.Add("oauth_timestamp", GenerateTimeStamp());
                parameters.Add("oauth_signature_method", "HMAC-SHA1");
                parameters.Add("oauth_consumer_key", consumerKey);
                parameters.Add("oauth_consumer_secret", consumerSecret);
            }
            private static string GetFinalOAuthHeader(string HTTPRequestType, string URL, Dictionary<string, string> parameters)
            {
                // Add the signature to the oauth parameters
                string signature = GenerateSignature(HTTPRequestType, URL, parameters);
                parameters.Add("oauth_signature", signature);
                StringBuilder authHeaderBuilder = new StringBuilder();
                authHeaderBuilder.AppendFormat("OAuth realm=\"{0}\"", "Twitter API");
                var sortedParameters = from p in parameters
                                       where OAuthParametersToIncludeInHeader.Contains(p.Key)
                                       orderby p.Key, UrlEncode(p.Value)
                                       select p;
                foreach (var item in sortedParameters)
                {
                    authHeaderBuilder.AppendFormat(",{0}=\"{1}\"", UrlEncode(item.Key), UrlEncode(item.Value));
                }
                authHeaderBuilder.AppendFormat(",oauth_signature=\"{0}\"", UrlEncode(parameters["oauth_signature"]));
                return authHeaderBuilder.ToString();
            }
            private static string GenerateSignature(string httpMethod, string url, Dictionary<string, string> parameters)
            {
                var nonSecretParameters = (from p in parameters
                                           where !SecretParameters.Contains(p.Key)
                                           select p);
                // Create the base string. This is the string that will be hashed for the signature.
                string signatureBaseString = string.Format(CultureInfo.InvariantCulture,
                                                           "{0}&{1}&{2}",
                                                           httpMethod,
                                                           UrlEncode(NormalizeUrl(new Uri(url))),
                                                           UrlEncode(nonSecretParameters));
                // Create our hash key (you might say this is a password)
                string key = string.Format(CultureInfo.InvariantCulture,
                                           "{0}&{1}",
                                           UrlEncode(parameters["oauth_consumer_secret"]),
                                           parameters.ContainsKey("oauth_token_secret") ? UrlEncode(parameters["oauth_token_secret"]) : string.Empty);
                // Generate the hash
                HMACSHA1 hmacsha1 = new HMACSHA1(Encoding.ASCII.GetBytes(key));
                byte[] signatureBytes = hmacsha1.ComputeHash(Encoding.ASCII.GetBytes(signatureBaseString));
                return Convert.ToBase64String(signatureBytes);
            }
            private static string GenerateTimeStamp()
            {
                // Default implementation of UNIX time of the current UTC time
                TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
                return Convert.ToInt64(ts.TotalSeconds, CultureInfo.CurrentCulture).ToString(CultureInfo.CurrentCulture);
            }
            private static string GenerateNonce()
            {
                // Just a simple implementation of a random number between 123400 and 9999999
                return new System.Random().Next(123400, int.MaxValue).ToString("X", CultureInfo.InvariantCulture);
            }
            private static string NormalizeUrl(Uri url)
            {
                string normalizedUrl = string.Format(CultureInfo.InvariantCulture, "{0}://{1}", url.Scheme, url.Host);
                if (!((url.Scheme == "http" && url.Port == 80) || (url.Scheme == "https" && url.Port == 443)))
                {
                    normalizedUrl += ":" + url.Port;
                }
                normalizedUrl += url.AbsolutePath;
                return normalizedUrl;
            }
            private static string UrlEncode(string value)
            {
                if (string.IsNullOrEmpty(value))
                {
                    return string.Empty;
                }
                value = Uri.EscapeDataString(value);
                // UrlEncode escapes with lowercase characters (e.g. %2f) but oAuth needs %2F
                value = Regex.Replace(value, "(%[0-9a-f][0-9a-f])", c => c.Value.ToUpper());
                // these characters are not escaped by UrlEncode() but needed to be escaped
                value = value
                    .Replace("(", "%28")
                    .Replace(")", "%29")
                    .Replace("$", "%24")
                    .Replace("!", "%21")
                    .Replace("*", "%2A")
                    .Replace("'", "%27");
                // these characters are escaped by UrlEncode() but will fail if unescaped!
                value = value.Replace("%7E", "~");
                return value;
            }
            private static string UrlEncode(IEnumerable<KeyValuePair<string, string>> parameters)
            {
                StringBuilder parameterString = new StringBuilder();
                var paramsSorted = from p in parameters
                                   orderby p.Key, p.Value
                                   select p;
                foreach (var item in paramsSorted)
                {
                    if (parameterString.Length > 0)
                    {
                        parameterString.Append("&");
                    }
                    parameterString.Append(
                        string.Format(
                            CultureInfo.InvariantCulture,
                            "{0}={1}",
                            UrlEncode(item.Key),
                            UrlEncode(item.Value)));
                }
                return UrlEncode(parameterString.ToString());
            }
            #endregion
        }
    }
    




    现在我们已经准备好了我们的脚本。 我们只需在按钮点击中调用“TwitterHandller”脚本和“TwitterHandller”脚本的“Twitter”()函数的TwitterLogin()函数。 成功分享后,您可以发布成功的调试。






    原文标题:How-to-Share-Image--Link-on-Twitter-through-Unity-iOS-App
    6蛮牛粉丝
    1138/1500
    排名
    3865
    昨日变化

    0

    主题

    527

    帖子

    1138

    积分

    Rank: 6Rank: 6Rank: 6

    UID
    156480
    好友
    0
    蛮牛币
    1849
    威望
    0
    注册时间
    2016-7-12
    在线时间
    225 小时
    最后登录
    2018-3-16
    沙发
    2017-9-21 09:33:13 只看该作者
    6666666666666666
    6蛮牛粉丝
    1016/1500
    排名
    3655
    昨日变化

    1

    主题

    371

    帖子

    1016

    积分

    Rank: 6Rank: 6Rank: 6

    UID
    122160
    好友
    1
    蛮牛币
    1669
    威望
    0
    注册时间
    2015-9-10
    在线时间
    236 小时
    最后登录
    2018-8-1
    板凳
    2017-9-21 09:35:31 只看该作者
    感谢分享
    7日久生情
    2228/5000
    排名
    1109
    昨日变化

    4

    主题

    380

    帖子

    2228

    积分

    Rank: 7Rank: 7Rank: 7Rank: 7

    UID
    151630
    好友
    5
    蛮牛币
    837
    威望
    0
    注册时间
    2016-6-12
    在线时间
    831 小时
    最后登录
    2019-5-22
    地板
    2017-9-21 11:08:07 只看该作者
    推特国内没法登陆。。。而且为啥不用shareSDK呢?
    7日久生情
    4393/5000
    排名
    2320
    昨日变化

    5

    主题

    3109

    帖子

    4393

    积分

    Rank: 7Rank: 7Rank: 7Rank: 7

    UID
    209186
    好友
    5
    蛮牛币
    1148
    威望
    0
    注册时间
    2017-3-1
    在线时间
    666 小时
    最后登录
    2019-5-14
    5#
    2017-9-21 14:14:21 只看该作者
    谢谢分享
    7日久生情
    2783/5000
    排名
    467
    昨日变化

    1

    主题

    326

    帖子

    2783

    积分

    Rank: 7Rank: 7Rank: 7Rank: 7

    UID
    27816
    好友
    3
    蛮牛币
    8931
    威望
    0
    注册时间
    2014-6-3
    在线时间
    890 小时
    最后登录
    2019-4-25
    6#
    2017-9-21 17:17:04 只看该作者
    赞赞赞赞赞赞赞赞赞赞赞赞赞
    7日久生情
    2237/5000
    排名
    20606
    昨日变化

    2

    主题

    1848

    帖子

    2237

    积分

    Rank: 7Rank: 7Rank: 7Rank: 7

    UID
    185807
    好友
    0
    蛮牛币
    2899
    威望
    0
    注册时间
    2016-11-22
    在线时间
    359 小时
    最后登录
    2019-1-10
    7#
    2017-9-21 17:37:34 只看该作者
    666666666666666
    5熟悉之中
    589/1000
    排名
    8080
    昨日变化

    4

    主题

    76

    帖子

    589

    积分

    Rank: 5Rank: 5

    UID
    221055
    好友
    14
    蛮牛币
    945
    威望
    0
    注册时间
    2017-5-7
    在线时间
    357 小时
    最后登录
    2019-5-22
    8#
    2017-9-25 21:09:44 只看该作者
    小白,看来会没看明白,大佬方便讲解一下吗
    3偶尔光临
    210/300
    排名
    11085
    昨日变化

    0

    主题

    39

    帖子

    210

    积分

    Rank: 3Rank: 3Rank: 3

    UID
    109907
    好友
    0
    蛮牛币
    91
    威望
    0
    注册时间
    2015-6-23
    在线时间
    79 小时
    最后登录
    2017-11-2
    9#
    2017-10-18 16:43:41 只看该作者
    谢谢分享
    6蛮牛粉丝
    1103/1500
    排名
    3186
    昨日变化

    4

    主题

    221

    帖子

    1103

    积分

    Rank: 6Rank: 6Rank: 6

    UID
    235098
    好友
    0
    蛮牛币
    1664
    威望
    0
    注册时间
    2017-7-31
    在线时间
    412 小时
    最后登录
    2019-5-22
    10#
    2017-11-29 09:15:39 只看该作者
    5熟悉之中
    616/1000
    排名
    6774
    昨日变化

    0

    主题

    286

    帖子

    616

    积分

    Rank: 5Rank: 5

    UID
    250350
    好友
    2
    蛮牛币
    619
    威望
    0
    注册时间
    2017-10-23
    在线时间
    134 小时
    最后登录
    2019-5-11
    11#
    2017-11-29 18:23:54 只看该作者
    谢谢分享
    3偶尔光临
    284/300
    排名
    17380
    昨日变化

    0

    主题

    203

    帖子

    284

    积分

    Rank: 3Rank: 3Rank: 3

    UID
    254038
    好友
    0
    蛮牛币
    171
    威望
    0
    注册时间
    2017-11-13
    在线时间
    43 小时
    最后登录
    2019-5-22
    12#
    2017-12-2 14:18:43 只看该作者
    666666666666666666666666
    3偶尔光临
    241/300
    排名
    10342
    昨日变化

    0

    主题

    76

    帖子

    241

    积分

    Rank: 3Rank: 3Rank: 3

    UID
    173414
    好友
    0
    蛮牛币
    179
    威望
    0
    注册时间
    2016-10-4
    在线时间
    61 小时
    最后登录
    2019-5-22
    13#
    2017-12-7 15:35:20 只看该作者
    6666666666
    5熟悉之中
    875/1000
    排名
    5640
    昨日变化

    0

    主题

    448

    帖子

    875

    积分

    Rank: 5Rank: 5

    UID
    146677
    好友
    9
    蛮牛币
    2777
    威望
    0
    注册时间
    2016-4-25
    在线时间
    177 小时
    最后登录
    2019-5-17
    QQ
    14#
    2017-12-16 18:03:07 只看该作者
    学习一下做海外版本必用
    5熟悉之中
    786/1000
    排名
    5260
    昨日变化

    5

    主题

    262

    帖子

    786

    积分

    Rank: 5Rank: 5

    UID
    209710
    好友
    0
    蛮牛币
    2372
    威望
    0
    注册时间
    2017-6-15
    在线时间
    253 小时
    最后登录
    2019-5-22
    15#
    2017-12-18 17:41:52 只看该作者
    6666666666666666666666
    您需要登录后才可以回帖 登录 | 注册帐号

    本版积分规则

  • 党建第一责任与发展第一要务相融合br全面提升机关党建工作水平 2019-05-22
  • 卡纳瓦罗:对比赛结果不满意 晋级机会各占一半 2019-05-22
  • 天津宣讲十九大:津沽大地舞春风,小康路上添豪情 2019-05-21
  • 酱香酒为什么要在端午时节制曲微生物 酒曲 2019-05-20
  • 回复@艾鸣1:你看强坛除了小寻子这种跟你一样老蚕的人之外,有人会有人敢支持你么? 2019-05-15
  • 中国经济稳中向好的发展态势没有变 2019-05-14
  • 私扫码付不加控制党政和人行国有银行国有企业自动退出历史舞台 2019-05-11
  • 你真没一点脑子,文字是哪个人的,你到说说啊 2019-05-04
  • 黎明华丽转身成监制 他给四川金丝猴拍了部动画片 2019-05-04
  • 候选案例:爱在华住滇西北宿改工程 2019-05-02
  • 山西寿阳:竹马戏演员的台前幕后 2019-04-26
  • 96次航拍峨眉 换个角度看巴蜀名山 中国国家地理网 2019-04-23
  • 俄罗斯电影《最后一球》定档落魄球星遇上菜鸟球队 2019-04-21
  • 【理上网来·辉煌十九大】缅甸资深媒体人高度评价习近平十九大报告:立意高远 内涵丰富 2019-04-21
  • 特朗普和金正恩先后抵达嘉佩乐酒店 会晤即将开始 2019-04-17