मैं अपने सर्वर पर भेजे गए OAuth2 के माध्यम से जावास्क्रिप्ट में googleUser.getAuthResponse().id_token प्राप्त करने के लिए gapi का उपयोग कर रहा हूं। मैं फिर खाते पर संदेशों को सूचीबद्ध करने के लिए जीमेल एपीआई तक पहुंचने के लिए जावा एपीआई का उपयोग करना चाहता हूं, लेकिन जब मैं इसे एक्सेस करने का प्रयास करता हूं तो मुझे निम्न त्रुटि मिल रही है:

[error] com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized
[error] {
[error]   "code" : 401,
[error]   "errors" : [ {
[error]     "domain" : "global",
[error]     "location" : "Authorization",
[error]     "locationType" : "header",
[error]     "message" : "Invalid Credentials",
[error]     "reason" : "authError"
[error]   } ],
[error]   "message" : "Invalid Credentials"
[error] }

स्कैला कोड क्षमा करें, लेकिन यही वह है जिसे मैं लागू कर रहा हूं:

val gmail = new Gmail.Builder(transport, jsonFactory, credential)
        .setApplicationName("myapp")
        .build()
val response = gmail.users().messages().list(userId).execute()

userId मुझे जावा एपीआई के प्रोफाइल लुकअप से मिल रहा है (जो बहुत अच्छा काम करता है), यह सिर्फ Gmail इंस्टेंस तक पहुंचने का प्रयास कर रहा है जो मुझे परेशानी दे रहा है। मैंने खोज की है लेकिन मुझे इस विशिष्ट स्थिति के बारे में कोई जानकारी खोजने में कठिनाई हो रही है।

2
darkfrog 19 अक्टूबर 2018, 02:28

1 उत्तर

सबसे बढ़िया उत्तर

बहुत खोजबीन और खराब Google दस्तावेज़ीकरण के बाद, मुझे अंततः पता चला कि मैं user.getAuthResponse().id_token का उपयोग कर रहा था जब मुझे user.getAuthResponse().access_token का उपयोग करना चाहिए था। कष्टप्रद है कि यह कहीं भी प्रलेखित प्रतीत नहीं होता है, लेकिन उम्मीद है कि यह भविष्य में किसी और की मदद करेगा।

GoogleCredential का निर्माण उतना ही सरल था जितना:

private val credential = new GoogleCredential.Builder().build().setAccessToken(accessToken)
3
darkfrog 23 अक्टूबर 2018, 14:20