سؤال

أحاول تحديث الحالة على Twitter باستخدام Twitter4J. كل شيء يعمل بشكل جيد على المضيف المحلي ، لكن عندما أحاول القيام بذلك على الخادم ، أحصل على خطأ في التفويض:

401: كانت بيانات اعتماد المصادقة مفقودة أو غير صحيحة. {"error": "invalid /use nonce" ، "request": "/1 /stitations /update.json"} twitterexception {inspultCode = [15bb6564-00e4d61f] = NULL ، الإصدار = 2.1.7-snapshot (بناء: 6498F401635AACF3388891CC5140B2086FF3F8AA)}

لقد قمت بإنشاء رمز الوصول للمستخدم باستخدام طريقة "PIN" على مضيف LocalHost. أعتقد أنه لا ينبغي أن يهم أين تم إنشاؤه ، accessToken.getToken() و accessToken.getTokenSecret() لا ينبغي أن تعتمد القيم على الجهاز الذي أقوم بتشغيله ، ويجب أن تعمل في أي مكان ، أليس كذلك؟

ماذا تعني رسالة الخطأ هذه؟ أنا لا أفهم جزء "غير مستخدم nonce".

تحديث

حسنًا ، شيء ما قد أفسد في مكان ما. أحاول توليد الرمز المميز للوصول على خادم الآن ولا يمكنني حتى الوصول إلى إنشاء عنوان URL للترخيص بالنسبة لي:

Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer("twitterConsumerKey", "twitterConsumerSecret");

RequestToken requestToken = twitter.getOAuthRequestToken();
System.out.println(requestToken.getAuthorizationURL());

هذا فشل مع:

401:Authentication credentials were missing or incorrect.
Failed to validate oauth signature and token
TwitterException{exceptionCode=[68a00bf1-d29b9452], statusCode=401, retryAfter=0, rateLimitStatus=null, version=2.1.7-SNAPSHOT(build: 6498f401635aacf3388891cc5140b2086ff3f8aa)}
at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:308)
        at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:72)
        at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:103)
        at twitter4j.http.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:124)
        at twitter4j.TwitterOAuthSupportBaseImpl.getOAuthRequestToken(TwitterOAuthSupportBaseImpl.java:87)
        at twitter4j.Twitter.getOAuthRequestToken(Twitter.java:54)
        at twitter4j.TwitterOAuthSupportBaseImpl.getOAuthRequestToken(TwitterOAuthSupportBaseImpl.java:80)
        at twitter4j.Twitter.getOAuthRequestToken(Twitter.java:54)

في LocalHost كل شيء يعمل بشكل جيد.

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

المحلول

أسبوع وعدد قليل من الشعر الرمادي في وقت لاحق اتضح أن المشكلة كانت في التوقيت المحلي على خادم تم إيقاف تشغيله. قام شخص ما بعمل رائع مع رسائل خطأ واضحة على Twitter.

نصائح أخرى

nonce هي قيمة مصممة لاستخدامها مرة واحدة فقط.

أظن أن الكود الذي تستخدمه لإنشاء nonce هو حفظ nonce ومحاولة إعادة استخدامه.

لست على دراية بمكتبة Twitter4J ، لكنني سأتحقق وأتأكد من أنك تقوم بإنشاء Nonce جديد لكل طلب.

بالنسبة إلى "401: بيانات اعتماد المصادقة كانت مفقودة أو غير صحيحة". تأكد أيضًا من تضمين دبوس التحقق مع الطلب كجزء من قاعدة التوقيع.

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