FitBit - 代表用户进行身份验证

时间:2014-09-12 15:12:47

标签: oauth fitbit

简而言之,我们不希望我们的客户每次登录网站时都要进行身份验证,并希望在我们的网站上同步他们的Fitbit数据。

我们希望他们进行一次身份验证,然后保存令牌并使用它来自动同步数据。我似乎无法获得工作授权。我正在使用.Net。

这是我的代码,但不断获得401 - 未经授权

string consumerKey = "KEY";
        string authToken = "TOKEN";
        string secrectKey = "SECRET"; 

        string baseUrl = "http://api.fitbit.com/1/user/-/profile.xml";
        string auth_nonce = DateTime.Now.Ticks.ToString();
        string timestamp = ( ( Int32 )( DateTime.UtcNow.Subtract( new DateTime( 1970, 1, 1 ) ) ).TotalSeconds ).ToString();
        string signingKey = string.Empty;
        string authSignature = string.Empty;


        string parameters = "oauth_consumer_key=" + consumerKey + "&oauth_nonce=" + auth_nonce + "&oauth_signature_method=HMAC-SHA1&oauth_timestamp=" + timestamp + "&oauth_token=" + authToken + "&oauth_version=1.0";


        //1. percent encode
        parameters = HttpUtility.UrlEncode( parameters );

        //encode baseURL
        baseUrl = HttpUtility.UrlEncode( baseUrl );

        //add POST
        //signature base string
        parameters = "GET&" + baseUrl + "&" + parameters;

        //signing key
        signingKey = secrectKey + "&" + authToken;


        //generate key
        //base64 signature srting
        authSignature = Convert.ToBase64String( Generate( signingKey, parameters ) );

        //url for request
        WebRequest g = HttpWebRequest.Create( "http://api.fitbit.com/1/user/-/profile.xml" );

        //add headers
        g.Headers.Add( HttpRequestHeader.Authorization, "OAuth realm=\"api.fitbit.com\" oauth_token=\"" + authToken + "\", oauth_consumer_key=\"" + consumerKey + "\", oauth_nonce=\"" + auth_nonce + "\",  oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"" + timestamp + "\", oauth_version=\"1.0\", oauth_signature=\"" + authSignature.Replace( "=", "%3D" ) + "\"" );

        //get response from server
        var response = g.GetResponse();

是否有人拥有示例代码或可以查看问题所在?

亲切的问候

1 个答案:

答案 0 :(得分:2)

我为我们办公室的内部fitbit联盟写了类似的东西

代码在github NewOrbit Fitbit League

它使用Azure表存储作为后备存储以保留令牌,但您应该能够根据需要进行更改,它还支持使用Move应用程序的用户

[编辑] 我还使用Fitbit.net作为客户端库