我已经浪费了一整天的时间在 C#.NET 中为 URL Shortener API 查找 Google 服务帐户 OAuth2 的示例代码。
我正在尝试将缩短器 api 与服务器到服务器请求一起使用。
请帮我。
谢谢
我已经浪费了一整天的时间在 C#.NET 中为 URL Shortener API 查找 Google 服务帐户 OAuth2 的示例代码。
我正在尝试将缩短器 api 与服务器到服务器请求一起使用。
请帮我。
谢谢
string longURL="http://www.google.com";
string url = "https://www.googleapis.com/urlshortener/v1/url?key=" + apiKey;
WebClient client = new WebClient();
client.Headers["Content-Type"] = "application/json";
var response = client.UploadString(url,JsonConvert.SerializeObject(new { longUrl = longURL }));
var shortUrl = (string)JObject.Parse(response)["id"];
在我看来,您应该阅读正确的Google 页面。
其中的一部分:
您的应用程序向 Google URL Shortener API 发送的每个请求都需要向 Google 识别您的应用程序。有两种方法可以识别您的应用程序:使用 OAuth 2.0 令牌(也授权请求)和/或使用应用程序的 API 密钥。
获取和使用 API 密钥
对公共数据的 Google URL Shortener API 的请求必须附有标识符,该标识符可以是 API 密钥或身份验证令牌。
要获取 API 密钥,请访问 API 控制台。在“服务”窗格中,激活 Google URL Shortener API;如果出现服务条款,请阅读并接受它们。
接下来,转到 API 访问窗格。API 密钥位于该窗格底部附近,位于标题为“简单 API 访问”的部分中。
拥有 API 密钥后,您的应用程序可以将查询参数附加
key=yourAPIKey
到所有请求 URL。API 密钥对于嵌入 URL 是安全的;它不需要任何编码。
缩短长网址
Google URL Shortener API 允许您像在 goo.gl 上一样缩短 URL。例如,要缩短 URL http://www.google.com/,请发送以下请求:
POST https://www.googleapis.com/urlshortener/v1/url
Content-Type: application/json
{"longUrl": "http://www.google.com/"}
我使用 HttpClient 使它在 Windows 8 中工作。这是代码,不需要 Api 密钥。
var serializedUrl = JsonConvert.SerializeObject(new { longUrl = yourlongUrl});
HttpClient client = new HttpClient();
var Content = new StringContent(serializedUrl, Encoding.UTF8, "application/json");
var resp = await client.PostAsync("https://www.googleapis.com/urlshortener/v1/url", Content);
var content = await resp.Content.ReadAsStringAsync();
var jsonObject = JsonConvert.DeserializeObject<JObject>(content);
var shortedUrl = jsonObject["id"].Value<string>();
这是对我有用的代码。此代码建立服务器到服务器的连接并获取身份验证令牌。然后它会调用以缩短 URL。API 密钥存储在 app.config 中。
您可以在此处阅读更多信息:http: //www.am22tech.com/google-url-shortener-api-shorten-url/
using System;
using System.Collections.Generic;
using System.Web;
using System.Configuration;
using System.Security.Cryptography.X509Certificates;
using System.Threading;
using System.Data;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Urlshortener.v1;
using Google.Apis.Urlshortener.v1.Data;
using Google.Apis.Services;
public static string shortenURL(string urlToShorten, string webSiteBasePath)
{
string shortURL = string.Empty;
try
{
/********************************************************************/
string AuthenticationToken = string.Empty;
var certificate = new X509Certificate2(webSiteBasePath + "/" + ConfigurationManager.AppSettings["IHSGoogleURlShortenerPrivateKeyName"].ToString(),
ConfigurationManager.AppSettings["IHSGoogleURlShortenerPrivateKeySecret"].ToString(),
X509KeyStorageFlags.MachineKeySet |
X509KeyStorageFlags.PersistKeySet |
X509KeyStorageFlags.Exportable);
String serviceAccountEmail = ConfigurationManager.AppSettings["IHSGoogleURLShortenerServiceAcEmail"].ToString();
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { UrlshortenerService.Scope.Urlshortener }
}.FromCertificate(certificate));
if (credential.RequestAccessTokenAsync(CancellationToken.None).Result)
{
AuthenticationToken = credential.Token.AccessToken;
}
// Create the service.
var service = new UrlshortenerService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ConfigurationManager.AppSettings["IHSGoogleURLShortnerAppName"].ToString(),
});
// Shorten URL
Url toInsert = new Url { LongUrl = urlToShorten };
toInsert = service.Url.Insert(toInsert).Execute();
shortURL = toInsert.Id;
}
return (shortURL);
}