سؤال

حقيقة أن Delicious لديها مجموعتان من مصادقة API مع اسم المستخدم وكلمة المرور وأحدهما مع Oauth أخبرني شيئًا عن الأشياء التي كنت سأختبرها ولم أكن مخطئًا. لسوء الحظ ، يجب أن أتعامل مع كل من واجهات برمجة التطبيقات الآن ، وأنا غير ناجح لأتلقى العقبة الأولى من API V2 (Yahoo Oauth).

فيما يلي مقتطف رمز (أنا أستخدم OpenSocial في هذا المثال http://code.google.com/p/opensocial-net-client)

public static string GetRequestToken(string callbackUrl)
{
    string normaluri;
    string normaluriparam;
    OAuthBase oAuth = new OAuthBase();
    string nonce = oAuth.GenerateNonce();
    string timeStamp = oAuth.GenerateTimeStamp();
    string sig = oAuth.GenerateSignature(new Uri(TOKEN_URL), ConfigurationManager.AppSettings[CONSUMER_KEY],
                                         ConfigurationManager.AppSettings[SECRET_KEY],
                                         string.Empty,
                                         string.Empty,
                                         "GET",
                                         timeStamp,
                                         nonce,
                                         OAuthBase.SignatureTypes.HMACSHA1,
                                         out normaluri,
                                         out normaluriparam);
    sig = HttpUtility.UrlEncode(sig);

    string result =
        HttpClient.Get(TOKEN_URL, new
                                      {
                                          oauth_nonce = nonce,
                                          oauth_timestamp = timeStamp,
                                          oauth_consumer_key = ConfigurationManager.AppSettings[CONSUMER_KEY],
                                          oauth_signature_method = "HMAC-SHA1",
                                          oauth_signature = sig,
                                          oauth_version = "1.0",
                                          oauth_callback = callbackUrl
                                      });

    return result;
}

يبدو أنه لا يهم إذا اتبعت التعليمات في http://delicious.com/help/oauthapi بنفسي من اترك الأمر إلى OpenSocial ، أحصل على "401 غير مصرح به" من الخادم دون أي معلومات أخرى.

أستطيع أن أرى الكثير من الناس لديهم نفس المشكلة ولكن لم يتمكنوا من العثور على أي قرار.

هل كانت مفيدة؟

المحلول

الجواب هو "لا تستخدم HMAC-SHA1 لهذه المرحلة. كما نسيت تضمين Callbackurl في توقيع بلدي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top