情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Oauth認証(Dropbox)その1

DropboxのAPIを使用するためにOauth認証を行うWebページを作ってみました。Oauth認証やDropbox APIの使用には、アプリ鍵(Consumer Key)とアプリ秘密鍵(Consumer Secret)が必要です。アプリ鍵とアプリ秘密鍵はDropbox for Developersのマイアプリのページでアプリを作成すると発行されます。

ライブラリとしてjQuery、Query String Object、oauth.js、sha1.jsを使用しています。

<!DOCTYPE html>
<html>
<head>
    <title>Dropbox</title>
    <script type="text/javascript" src="jquery-1.6.2.js"></script>
    <script type="text/javascript" src="jquery.query-2.1.7.js"></script>
    <script type="text/javascript" src="oauth.js"></script>
    <script type="text/javascript" src="sha1.js"></script>
    <script type="text/javascript">
        var accessor = { consumerKey: "xxxxxxxxxxxxxxx", consumerSecret: "xxxxxxxxxxxxxxx", serviceProvider: { signatureMethod: "HMAC-SHA1", requestTokenURL: "https://api.dropbox.com/0/oauth/request_token", userAuthorizationURL: "https://www.dropbox.com/0/oauth/authorize", accessTokenURL: "https://api.dropbox.com/0/oauth/access_token"} };

        function getTokens() {
            var message = { method: "get", action: accessor.serviceProvider.requestTokenURL };
            OAuth.completeRequest(message, accessor);
            var url = OAuth.addToURL(message.action, message.parameters) + "&callback=?";

            $.ajax({
                url: url,
                dataType: "jsonp",
                type: "GET",
                success: function (data, status) {
                    var results = OAuth.decodeForm(data);

                    accessor.oauth_token = OAuth.getParameter(results, "oauth_token");
                    accessor.oauth_token_secret = OAuth.getParameter(results, "oauth_token_secret");

                    document.location = accessor.serviceProvider.userAuthorizationURL + "?oauth_token=" + accessor.oauth_token + "&oauth_callback=" + document.URL;
                },
                error: function (XHR, textStatus, errorThrown) {
                }
            });
        };

        function getTokens2() {
            message = { method: "get", action: accessor.serviceProvider.accessTokenURL };
            OAuth.completeRequest(message, { consumerKey: accessor.consumerKey, consumerSecret: accessor.consumerSecret, token: accessor.oauth_token, tokenSecret: accessor.oauth_token_secret });
            url = OAuth.addToURL(message.action, message.parameters) + "&callback=?";

            $.ajax({
                url: url,
                dataType: "jsonp",
                type: "GET",
                success: function (data, status) {
                    var results = OAuth.decodeForm(data);

                    accessor.oauth_token = OAuth.getParameter(results, "oauth_token");
                    accessor.oauth_token_secret = OAuth.getParameter(results, "oauth_token_secret");
                },
                error: function (XHR, textStatus, errorThrown) {
                }
            });
        };

        jQuery(document).ready(function ($) {
            accessor.oauth_token = $.query.get("oauth_token");
            accessor.oauth_token_secret = $.query.get("oauth_token");

            if (accessor.oauth_token && accessor.oauth_token_secret) {
                getTokens2();
            }
            else {
                getTokens();
            }
        });

    </script>
</head>
<body>
</body>
</html>
pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-web