Twitter 開発者キーとシークレットを使用して公開タイムラインからツイートを読み取る簡単なコードをいくつか書きました。これは、ユーザーの最新のツイートを自分の Web サイトに表示できるようにするためです。コードは以下のとおりです。
私は今、Google の Blogger のブログで同様のことをしたいと考えています。Google API キーとシークレットを使用して、ユーザーの認証を必要とせずにブログの公開コンテンツを読み取る方法があると想定していました。Blogger サイトにリンクできるように、ブログのタイトルと日付だけが必要です。しかし、私は 24 時間インターネットを精査しましたが、キーとシークレットだけを使用してアクセス トークンを取得する例を見つけることができません。
Google API SDK を使用して、以下のコードまで取得しましたが、ユーザーを認証させずにアクセス トークンを取得する方法が見つかりません。アドバイスをいただければ幸いです - 頭を壁にぶつけているような気がします! どんなアプローチでも喜んで受け入れます - 私が構築しているウェブサイトで Blogger コンテンツを取得したいだけです...
Twitter で認証する:
var oAuthConsumerKey = _key;
var oAuthConsumerSecret = _secret;
var oAuthUrl = "https://api.twitter.com/oauth2/token";
// Do the Authenticate
var authHeaderFormat = "Basic {0}";
var authHeader = string.Format(authHeaderFormat,
Convert.ToBase64String(Encoding.UTF8.GetBytes(Uri.EscapeDataString(oAuthConsumerKey) + ":" +
Uri.EscapeDataString((oAuthConsumerSecret)))
));
var postBody = "grant_type=client_credentials";
HttpWebRequest authRequest = (HttpWebRequest)WebRequest.Create(oAuthUrl);
authRequest.Headers.Add("Authorization", authHeader);
authRequest.Method = "POST";
authRequest.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
authRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
using (Stream stream = authRequest.GetRequestStream())
{
byte[] content = ASCIIEncoding.ASCII.GetBytes(postBody);
stream.Write(content, 0, content.Length);
}
authRequest.Headers.Add("Accept-Encoding", "gzip");
WebResponse authResponse = authRequest.GetResponse();
// deserialize into an object
string objectText;
using (authResponse)
{
using (var reader = new StreamReader(authResponse.GetResponseStream()))
{
objectText = reader.ReadToEnd();
}
}
// objectText is JSON and contains access_token
Blogger で認証しますか??
private bloggerTest()
{
// Register the authenticator.
var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description)
{
ClientIdentifier = _key,
ClientSecret = _secret
};
var auth = new OAuth2Authenticator<NativeApplicationClient>(provider, GetAuthorization);
// Create the service.
var service = new BloggerService(new BaseClientService.Initializer()
{
Authenticator = auth
});
var result = service.Posts.List(_blogID).Fetch();
}
private IAuthorizationState GetAuthorization(NativeApplicationClient arg)
{
var state = new AuthorizationState(new[] { BloggerService.Scopes.BloggerReadonly.GetStringValue() });
// I am stuck here!
}