Кнопка «Поделиться щебетом» для неанглийских - PullRequest
1 голос
/ 27 февраля 2020

Эй, ребята, во-первых, я хотел бы поблагодарить всех вас за чтение моего вопроса и за ваше время. У меня есть кнопка «Поделиться Twitter»,

Это код html

<a id="TwitterShare"  target="_blank"   runat="server" rel="nofollow" class="twitter"><i class="fa fa-twitter "  aria-hidden="true">غرد</i></a>

И этот код:

string RequestTwitter = "https://twitter.com/intent/tweet?text=";
string WebsiteURl = "https://www.MyWebsite.com/";
string Localurl = "Post/" + Postid + "/" + PostName;
string FullMineURL= WebsiteURl+Server.UrlEncode(Localurl);
string TwitterFinal = RequestTwitter + FullMineURL;
TwitterShare.Attributes.Add("href", TwitterFinal);

Код работать и получить URL-адрес, но когда я делюсь ссылкой, твиттер не читает полную ссылку, и это потому, что ссылка видится таким образом

اكل-الجوز-وعلاقته-وفوائده-للقلب-والامعاءhttps://Mywebsite.com/Post/3163/

Я пытался отладить код, но я обнаружил, что код пришел правильным путем

1 Ответ

1 голос
/ 28 февраля 2020

Я запустил ваш код, и он работает нормально, я не думаю, что это проблема с вашим кодом (Подобная проблема также сообщалась в этом вопросе

Вы можете использовать URL Shortner , чтобы сократить URL и использовать это в своем дескрипторе твита, я попытался и смог поделиться твитом

Вы можете зарегистрироваться здесь и сгенерировать GenericAccessToken здесь

Заменить _bitlyToken на GenericAccessToken , который вы можете сгенерировать


Использование

Убедитесь, что ваша страница помечена как Asyn c. <%@ Page Async="true" %>

protected void Page_Load(object sender, EventArgs e)
{ 
 RegisterAsyncTask(new PageAsyncTask(CurrentPost); 
}
async Task CurrentPost()
{ 
...
var shortenURL =  await p.ShortenAsync(FullMineURL);
string TwitterFinal = RequestTwitter + shortenURL;
TwitterShare.Attributes.Add("href", TwitterFinal);
...
}

Вспомогательный метод

public async Task<string> ShortenAsync(string longUrl)
{
    //with thanks to @devfunkd - see https://stackoverflow.com/questions/31487902/nuget-package-for-bitly-to-shorten-the-links

    var url = string.Format("https://api-ssl.bitly.com/v3/shorten?access_token={0}&longUrl={1}",
            _bitlyToken, HttpUtility.UrlEncode(longUrl));

    var request = (HttpWebRequest)WebRequest.Create(url);
    try
    {
        var response = await request.GetResponseAsync();
        using (var responseStream = response.GetResponseStream())
        {
            var reader = new StreamReader(responseStream, Encoding.UTF8);
            var jsonResponse = JObject.Parse(await reader.ReadToEndAsync());
            var statusCode = jsonResponse["status_code"].Value<int>();
            if (statusCode == (int)HttpStatusCode.OK)
                return jsonResponse["data"]["url"].Value<string>();

            //else some sort of problem
            Console.WriteLine("Bitly request returned error code {0}, status text '{1}' on longUrl = {2}",
                statusCode, jsonResponse["status_txt"].Value<string>(), longUrl);
            //What to do if it goes wrong? I return the original long url
            return longUrl;
        }
    }
    catch (WebException ex)
    {
        var errorResponse = ex.Response;
        using (var responseStream = errorResponse.GetResponseStream())
        {
            var reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
            var errorText = reader.ReadToEnd();
            // log errorText
            Console.WriteLine("Bitly access threw an exception {0} on url {1}. Content = {2}", ex.Message, url, errorText);
        }
        //What to do if it goes wrong? I return the original long url
        return longUrl;
    }
} 

Благодарю Ответ Джона

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...