【问题标题】:FitBit - Authenticate on behalf of userFitBit - 代表用户进行身份验证
【发布时间】:2014-09-12 15:12:47
【问题描述】:

简而言之,我们不希望我们的客户在每次登录网站并希望在我们的网站上同步他们的 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();

有没有人有示例代码或者可以看出问题出在哪里?

亲切的问候

【问题讨论】:

    标签: oauth fitbit


    【解决方案1】:

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

    代码在github上NewOrbit Fitbit League

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

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

    【讨论】:

    • 非常感谢!!我会看看这个:)
    • 这很有效,谢谢!好像如果您使用 Fitbit.Net api,它会为您完成所有繁琐的工作,谢谢!
    猜你喜欢
    • 2023-03-12
    • 2016-03-28
    • 2015-08-05
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2013-03-11
    相关资源
    最近更新 更多