1

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!
    }
4

1 に答える 1

1

パブリック フィードにアクセスする方法は、実際に行っている方法よりもはるかに簡単です。RSS フィードを処理するために .Net フレームワークに組み込まれたクラスが多数あります。 SyndicationFeedから始めることができます。フィード アイテム (ブログ投稿) を取得するのは非常に簡単です。

XDocument feed = XDocument.Load(rssUrl);   //rssUrl is the URL to the rss page that (most) blogs publish
SyndicationFeed sf = SyndicationFeed.Load(feed.CreateReader());
foreach (SyndicationItem si in sf.Items)
{
    ..you've now got your feed item...
}

これによりフィード アイテムが提供されますが、それらが表示される完全な Web ページは提供されないことに注意してください (ただし、その URL は取得されます)。

于 2013-06-17T11:51:16.793 に答える