Google OAuth 2 प्राधिकरण - त्रुटि: redirect_uri_mismatch


385

वेबसाइट https://code.google.com/apis/console पर मैंने अपना एप्लिकेशन पंजीकृत किया है, जनरेट किए गए क्लाइंट आईडी: और क्लाइंट सीक्रेट को अपने ऐप पर सेट किया है और Google के साथ लॉग इन करने का प्रयास किया है। दुर्भाग्य से, मुझे त्रुटि संदेश मिला:

Error: redirect_uri_mismatch
The redirect URI in the request: http://127.0.0.1:3000/auth/google_oauth2/callback did not match a registered redirect URI

scope=https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email
response_type=code
redirect_uri=http://127.0.0.1:3000/auth/google_oauth2/callback
access_type=offline
approval_prompt=force
client_id=generated_id

इस संदेश का क्या मतलब है, और मैं इसे कैसे ठीक कर सकता हूं? मैं रत्न omniauth-google-oauth2 का उपयोग करता हूं


किसी और को यह समस्या होने पर, ध्यान दें कि आप https://accounts.google.com/o/oauth2/auth?client_id={client_id}&response_type=token&redirect_uri={redirect_uri}&scope={scope}परीक्षण करने के लिए अपना संपूर्ण ऐप चलाने के बजाय किसी ब्राउज़र जैसे URL तक पहुँच कर इस समस्या को समाप्त कर सकते हैं ।
जैक एम

मैंने देखा है, google अपने आप url के ऊपर redirect_uri को दोहरे उद्धरणों (redirect_uri = "जो भी") में बाँधता है, और इस त्रुटि का परिणाम होता है। यदि मैं इस दोहरे उद्धरण को हटाता हूं, तो मैं अगली स्क्रीन पर जा सकता हूं। अब, हम इस दोहरे उद्धरण को कैसे मिटा सकते हैं, क्योंकि यह स्वतः ही Google द्वारा पुनर्निर्देशित हो जाता है।
अभिषेक सोनी

जवाबों:


388

रीडायरेक्ट URI (जहां प्रतिक्रिया लौटा दी गई है) को APIs कंसोल में पंजीकृत होना है, और त्रुटि यह संकेत दे रही है कि आपने ऐसा नहीं किया है, या इसे सही तरीके से नहीं किया है।

अपने प्रोजेक्ट के लिए कंसोल पर जाएं और एपीआई एक्सेस के तहत देखें। आपको अपने client IDऔर client secretवहां के साथ-साथ, अनुप्रेषित यूआरआई की सूची देखनी चाहिए। यदि आप चाहते हैं कि URI सूचीबद्ध नहीं है, तो संपादन सेटिंग्स पर क्लिक करें और सूची में URI जोड़ें।

EDIT: (नीचे दिए गए अत्यधिक मूल्यांकित टिप्पणी से) ध्यान दें कि गूगल एप कंसोल को अपडेट करता है और जो बदलाव मौजूद है उसमें कुछ समय लग सकता है। आम तौर पर केवल कुछ मिनट लेकिन कभी-कभी यह अधिक लंबा लगता है।


9
किसी प्रकार का जादू है, क्योंकि जब मैंने एक घंटे पहले एक ही कॉलबैक की कोशिश की थी, तो यह काम नहीं किया था, लेकिन अब यह काम कर रहा है। कोई बात नहीं धन्यवाद!
user984621

337
इसी तरह की समस्या में भाग गया, और यह ध्यान रखना चाहता था कि Google एपीआई कंसोल को अपडेट किया जाए और जो बदलाव मौजूद है उसमें कुछ समय लग सकता है। आम तौर पर केवल कुछ मिनट लेकिन कभी-कभी यह अधिक लंबा लगता है।
15ol पर sdolphin

31
मुझे @ Bazyl का उत्तर पूरा करने दें: मुझे प्राप्त संदेश में, उन्होंने URI का उल्लेख किया " लोकलहोस्ट: 8080 " (जो निश्चित रूप से, एक आंतरिक Google कॉन्फ़िगरेशन लगता है)। मैंने उस एक, " लोकलहोस्ट: 8080 " के लिए अधिकृत यूआरआई को बदल दिया , और संदेश अब दिखाई नहीं दिया ... और वीडियो अपलोड हो गया ... एपीआईएस प्रलेखन बहुत ही लंगड़ा है ... हर बार जब मेरे पास कुछ काम होता है Google एपिस, मुझे बस "भाग्यशाली" लगता है, लेकिन इसके बारे में अच्छे प्रलेखन की कमी है ....:
डेविड एल

7
अपने ब्राउज़र में एक निजी / गुप्त विंडो खोलें, और पुनः प्रयास करें। कभी-कभी यह कैशिंग समस्या को ठीक करता है।
डनक

17
Google के पास "Api & Auth> क्रेडेंशियल्स" में Google कंसोल में रीडायरेक्ट के लिए कोई विकल्प नहीं है, अगर मैं एक नई क्लाइंट आईडी बनाता हूं या एक नई कुंजी उत्पन्न करता हूं, तो रीडायरेक्ट यूरी से निर्दिष्ट करने का कोई तरीका नहीं है। गूगल कंसोल।
user3338098

114

मेरे मामले में यह था wwwऔर non-wwwयूआरएल। वास्तविक साइट में wwwURL था और Google डेवलपर कंसोल में अधिकृत रीडायरेक्ट URI थे non-www। इसलिए, अनुप्रेषित यूआरआई में बेमेल था। मैंने इसे Authorized Redirect URIsGoogle डेवलपर कंसोल से wwwURL में अपडेट करके हल किया ।

अन्य सामान्य यूआरआई बेमेल हैं:

  • का प्रयोग http://प्राधिकृत रीडायरेक्ट URL में और https://वास्तविक URL, या इसके विपरीत के रूप में
  • http://example.com/अधिकृत रीडायरेक्ट URI में ट्रेलिंग स्लैश ( ) का उपयोग करना और http://example.comवास्तविक URL, या इसके विपरीत ट्रेलिंग स्लैश ( ) का उपयोग नहीं करना

यहां Google डेवलपर कंसोल के चरण-दर-चरण स्क्रीनशॉट दिए गए हैं ताकि यह उन लोगों के लिए उपयोगी हो, जिन्हें रीडायरेक्ट URI को अपडेट करने के लिए डेवलपर कंसोल पृष्ठ का पता लगाना मुश्किल हो रहा है।

  1. Https://console.developers.google.com पर जाएं

  2. अपने प्रोजेक्ट का चयन करें

अपने प्रोजेक्ट का चयन करें

  1. मेनू आइकन पर क्लिक करें

मेनू आइकन पर क्लिक करें

  1. API Managerमेनू पर क्लिक करें

एपीआई प्रबंधक मेनू का चयन करें

  1. Credentialsमेनू पर क्लिक करें । और इसके तहत OAuth 2.0 Client IDs, आपको अपना ग्राहक नाम मिलेगा। मेरे मामले में, यह है Web Client 1। इस पर क्लिक करें और एक पॉपअप दिखाई देगा जहां आप अधिकृत जावास्क्रिप्ट उत्पत्ति और अधिकृत पुनर्निर्देशित यूआरआई संपादित कर सकते हैं ।

क्रेडेंशियल मेनू चुनें

यहां प्रोजेक्ट और क्लाइंट आईडी बनाने का Google आलेख दिया गया है ।


9
इस उत्तर को वास्तव में अधिक धकेलने की आवश्यकता है, क्योंकि यह वास्तविक उत्तर प्रदान करता है। हमारे पास ठीक यही समस्या थी और इससे इसे हल करने में मदद मिली - धन्यवाद!
'10:

4
मेरी समस्या यह थी कि मुझे पता था कि क्या करना है, लेकिन यूआई के भीतर इसे ढूंढना नहीं है। यहां के स्क्रीनशॉट ने मदद की। धन्यवाद।
एलन

3
मैंने अधिकृत जावास्क्रिप्ट उत्पत्ति को खाली रखा और 127.0.0.1/google_account/authentication के रूप में URIs को अधिकृत किया और यह मुझसे काम लिया।
कृष

1
क्या आप मेरे प्रश्न में मेरी सहायता कर सकते हैं? stackoverflow.com/questions/37307612/…
लैटेंटडेनिस

कृपया मेरी मदद करें। stackoverflow.com/questions/41270512/…
अनब्रेकेबल

91

यदि आप Google+ जावास्क्रिप्ट बटन का उपयोग कर रहे हैं , तो आपको postmessageवास्तविक यूआरआई के बजाय उपयोग करना होगा। यह जानने के लिए मुझे लगभग पूरा दिन लग गया क्योंकि Google के डॉक्स किसी कारण से इसे स्पष्ट रूप से नहीं बताते हैं।


8
चूँकि यह प्रश्न त्रुटि संदेश को देखते समय शीर्ष हिट होता है, यहाँ कुछ अतिरिक्त बिंदु हैं। जैसा कि माइक कहते हैं, अपने रीडायरेक्ट URI के लिए "पोस्टमेसज" का उपयोग करें। आपको इसे 2 स्थानों पर निर्दिष्ट करने की आवश्यकता है (यदि आप वेब-ऐप-सर्वर-प्रवाह का उपयोग कर रहे हैं)। एक जावास्क्रिप्ट पर जी-साइनिन बटन में है। अन्य आपके सर्वर कोड में हस्ताक्षर प्राधिकरण क्लाइंट में है।
रोब व्हाईटसाइड

बहुत बढ़िया जवाब। मैं जावास्क्रिप्ट के साथ पोस्ट कर रहा था और google API config.php फ़ाइल में 'oauth2_redirect_uri' => 'पोस्टमेज़ेज' सेट करने की आवश्यकता थी।
user2998553

4
पोस्टमेज़ेज अच्छा लगता है, लेकिन यह बेकार हैError: invalid_request origin parameter is required!
user3338098

10
इस समस्या को हल करने के लिए कुछ घंटे बिताने के बाद, आपका जवाब मुझे बहुत मदद करता है! Google प्रलेखन बहुत स्पष्ट नहीं है। सर्वर साइड में, यदि आप Google API क्लाइंट लाइब्रेरी का उपयोग करते हैं, तो आपको इस कोड का उपयोग करना चाहिए: $client->setRedirectUri('postmessage');इसके बजाय$client->setRedirectUri('http://your.url...');
Guicara

3
वाह .... @Guicara समाधान एक दीवार के खिलाफ मेरे सिर की धड़कन के घंटे के बाद मेरे लिए काम किया।
djthoms

52

किसी भी प्रवाह में, जहां आपने क्लाइंट पक्ष पर एक प्राधिकरण कोड प्राप्त किया है , जैसे कि GoogleAuth.grantOfflineAccess()एपीआई , और अब आप अपने सर्वर को कोड पास करना चाहते हैं, इसे रिडीम करें और एक्सेस को स्टोर करें और टोकन को रिफ्रेश करें, फिर आपको शाब्दिक स्ट्रिंग का उपयोग करना होगा postmessageइसके बजाय redirect_uri।

उदाहरण के लिए, रूबी डॉक में स्निपेट पर निर्माण :

client_secrets = Google::APIClient::ClientSecrets.load('client_secrets.json')
auth_client = client_secrets.to_authorization
auth_client.update!(
  :scope => 'profile https://www.googleapis.com/auth/drive.metadata.readonly',
  :redirect_uri => 'postmessage' # <---- HERE
)

# Inject user's auth_code here:
auth_client.code = "4/lRCuOXzLMIzqrG4XU9RmWw8k1n3jvUgsI790Hk1s3FI"
tokens = auth_client.fetch_access_token!
# { "access_token"=>..., "expires_in"=>3587, "id_token"=>..., "refresh_token"=>..., "token_type"=>"Bearer"}

यहां तक ​​कि Google डॉक्यूमेंट में केवल postmessageइस पुराने Google+ साइन-इन डॉक का उल्लेख है । यहां G + बंद होने के बाद से स्क्रीनशॉट और संग्रह लिंक है और यह लिंक संभवतः चले जाएगा:

लीगेसी Google+ API DOC

यह पूरी तरह से अक्षम्य है कि ऑफ़लाइन पहुँच के लिए डॉक्टर पृष्ठ ने इसका उल्लेख नहीं किया है। #FacePalm


1
भगवान इसे लानत है, आपकी पोस्ट पूरी तरह से अतार्किक लग रही थी, लेकिन यह केवल एक चीज थी जो एक आकर्षण की तरह काम करती थी। बहुत बहुत धन्यवाद, यार !!!
मारीओब्रग

@mariobgr हाँ, अन्य उत्तर यहाँ उल्लेख करते हैं postmessage, लेकिन मैं विशिष्ट परिस्थितियों (जैसे grantOfflineAccess) को देना चाहता था जब यह पागल अनिर्दिष्ट हैक मेरे लिए आवश्यक था। : PI नहीं चाहता था कि यह सच हो। :) मुझे घंटों सिरदर्द होता है।
जेफ वार्ड

धन्यवाद! मुझे ठीक इसी की आवश्यकता थी।
१।

इसके लिए Google का ध्यान आकर्षित करने की आवश्यकता है। यह बिल्कुल भयावह है।
ग्लेड

अतुल्य लेकिन सच ... O__o
mlb

41

अपने वेब एप्लिकेशन के लिए मैंने लिखकर अपनी गलती को सुधार लिया

instead of : http://localhost:11472/authorize/
type :      http://localhost/authorize/

साझा करने के लिए धन्यवाद, यह मदद करता है। मैं इस पर अटका हुआ था क्योंकि GitHub OAuth2 API को आपको पोर्ट नंबर निकालने की आवश्यकता नहीं है।
फ्लोरिसला

मेरे लिए भी काम किया। मैं इस कोर्स का अनुसरण कर रहा था: asp.net/mvc/overview/security/… और 'रीडायरेक्ट यूरी एरर' प्राप्त करना। मैंने लोकलहोस्ट बदलने के बाद : 44334 / साइन-गूगल को लोकलहोस्ट / साइनइन-गूगल में काम किया। उपयोगी टिप के लिए बहुत बहुत धन्यवाद।
FrenkyB

1
बहुत बहुत धन्यवाद। मैं इस github.com/google/google-api-dotnet-client-samples के साथ परीक्षण कर रहा था और "अनुरोध में पुनर्निर्देशित URI" हर बार एक अलग पोर्ट से दिखाई दिया जो मैंने इसे चलाया था। इससे मुझे बहुत मदद मिली। यह पता लगाने में घंटों लग गए होंगे कि क्या हो रहा था!
एलेजांद्रो लोज्डिजिस्की

धन्यवाद, यह मेरे लिए भी काम किया। बस बंदरगाह ड्रॉप! :)
विद्स्टिज

31

सुनिश्चित करें कि प्रोटोकॉल "http: //" या "https: //" के रूप में अच्छी तरह से जाँच के रूप में प्रोटोकॉल की जाँच करें। सूची में दोनों URL जोड़ने के लिए बेहतर है।


10
काश मैंने दो घंटे पहले आपके उत्तर पर स्क्रॉल कर दिया होता
BiAiB

1
नहीं, यह सुनिश्चित करना बेहतर है कि आप https का उपयोग कर रहे हैं।
ब्रैड कोच

7

यह काफी अजीब और कष्टप्रद लगता है कि कोई "एक" समाधान नहीं है। मेरे लिए http: // localhost: 8000 ने काम नहीं किया लेकिन http: // लोकलहोस्ट: 8000 / ने काम किया।


2
यह इसलिए है क्योंकि redirect_uriडेवलपर्स कंसोल और आपके आवेदन में एक सटीक मिलान होना चाहिए।
tony gil

6

जब आप अपना ऐप https://code.google.com/apis/console पर रजिस्टर करते हैं और क्लाइंट आईडी बनाते हैं, तो आपको एक या एक से अधिक अप्रत्यक्ष यूआरआई निर्दिष्ट करने का मौका मिलता है। redirect_uriआपके सामान्य URI पर पैरामीटर का मान उनमें से किसी एक के साथ मेल खाना है।


और यह बहुत क्षेत्र के साथ है जिसमें गहरी कोणीय आधारित लिंक के लिए समस्याएं हैं क्योंकि google सहमत नहीं है [ Landed1.github.io/videos.html#/oauth2callbackatalogis एक मान्य URL
उतरा

2
ऐसा लगता है कि url https://code.google.com/apis/consoleकिसी भी अधिक मान्य नहीं है
एंथनी कोंग

धन्यवाद @AnthonyKong आपके अपडेट के लिए। मैंने जीने के लिए यूआरएल बदल दिया है। कृपया अभी जाँच करें।
Kathir

6

यह जवाब इस माइक के जवाब के समान है , और जेफ का जवाब , दोनों ग्राहक पक्ष पर सेट करता redirect_uriहै postmessage। मैं सर्वर साइड के बारे में अधिक जोड़ना चाहता हूं, और इस कॉन्फ़िगरेशन पर लागू होने वाली विशेष परिस्थिति भी।

टेक स्टैक

बैकएंड

फ़्रंट एंड

"कोड" प्रवाह (विशेष रूप से Google OAuth2 के लिए)

सारांश: प्रतिक्रिया -> अनुरोध सामाजिक सामाजिक "कोड" -> अनुरोध jwt टोकन अपने स्वयं के बैकेंड सर्वर / डेटाबेस के संदर्भ में "लॉगिन" स्थिति प्राप्त करने के लिए।

  1. फ्रंटएड (प्रतिक्रिया) responseType="code"एक प्राधिकरण कोड प्राप्त करने के लिए "Google साइन इन बटन" का उपयोग करता है । (यह टोकन नहीं है, एक्सेस टोकन नहीं है!)
    • Google साइन इन बटन react-google-loginऊपर उल्लेखित है।
    • बटन पर क्लिक करने से उपयोगकर्ता को अकाउंट चुनने के लिए एक पॉपअप विंडो आएगी। उपयोगकर्ता एक का चयन करने और खिड़की बंद होने के बाद, आपको बटन के कॉलबैक फ़ंक्शन से कोड मिलेगा।
  2. फ्रंटेंड इसे बैकएंड सर्वर के JWT समापन बिंदु पर भेजता है।
    • पोस्ट अनुरोध, के साथ { "provider": "google-oauth2", "code": "your retrieved code here", "redirect_uri": "postmessage" }
  3. अपने Django सर्वर के लिए मैं Django REST फ्रेमवर्क JWT + Django REST सोशल ऑथेंट का उपयोग करता हूं। Django फ्रंटएंड से कोड प्राप्त करता है, इसे Google की सेवा (आपके लिए किया गया) के साथ सत्यापित करें। एक बार सत्यापित हो जाने के बाद, यह JWT (टोकन) को वापस भेज देगा। फ्रंटेंड अब टोकन की कटाई कर सकते हैं और इसे कहीं स्टोर कर सकते हैं।
    • सब के सब REST_SOCIAL_OAUTH_ABSOLUTE_REDIRECT_URI, REST_SOCIAL_DOMAIN_FROM_ORIGINऔर REST_SOCIAL_OAUTH_REDIRECT_URIDjango के में settings.pyअनावश्यक हैं । (वे Django REST सोशल ऑथेंट द्वारा उपयोग किए जाने वाले स्थिरांक हैं) संक्षेप में, आपको Django में रीडायरेक्ट url से संबंधित कुछ भी सेटअप करने की आवश्यकता नहीं है"redirect_uri": "postmessage"में दृश्यपटल पर्याप्त प्रतिक्रिया। यह समझ में आता है क्योंकि सामाजिक कार्य जो आपको अपने पक्ष में करना होता है वह सभी अजाक्स-शैली POST का अनुरोध है, जो किसी भी रूप में प्रस्तुत नहीं होता है, इसलिए वास्तव में डिफ़ॉल्ट रूप से कोई पुनर्निर्देशन नहीं होता है। इसलिए यदि आप कोड + JWT प्रवाह का उपयोग कर रहे हैं, तो अनुप्रेषित url बेकार हो जाता है, और सर्वर-साइड पुनर्निर्देशित url सेटिंग कोई प्रभाव नहीं ले रही है।
  4. Django REST सामाजिक प्रामाणिक खाता निर्माण को संभालता है। इसका अर्थ है कि यह Google खाता ईमेल / अंतिम प्रथम नाम की जांच करेगा, और देखेगा कि क्या यह डेटाबेस में किसी खाते से मेल खाता है या नहीं। यदि नहीं, तो यह सटीक ईमेल और पहले अंतिम नाम का उपयोग करके आपके लिए एक बना देगा। लेकिन, youremailprefix717e248c5b924d60यदि आपका ईमेल है , तो उपयोगकर्ता नाम कुछ होगा youremailprefix@example.com। यह एक अद्वितीय उपयोगकर्ता नाम बनाने के लिए कुछ यादृच्छिक स्ट्रिंग जोड़ता है। यह डिफ़ॉल्ट व्यवहार है, मेरा मानना ​​है कि आप इसे अनुकूलित कर सकते हैं और उनके प्रलेखन में खुदाई करने के लिए स्वतंत्र महसूस कर सकते हैं।
  5. फ्रंटएंड उस टोकन को स्टोर करता है और जब उसे बैकएंड सर्वर पर CRUD का प्रदर्शन करना होता है, विशेष रूप से बनाएं / हटाएं / अपडेट करें, यदि आप अपने Authorizationहेडर में टोकन अटैच करते हैं और बैकएंड पर रिक्वेस्ट भेजते हैं, तो Django बैकएंड अब यह पहचान लेगा कि लॉगिन के रूप में, अर्थात प्रमाणीकृत उपयोगकर्ता। बेशक, यदि आपका टोकन समाप्त हो जाता है, तो आपको एक और अनुरोध करके इसे ताज़ा करना होगा।

ओह मेरी अच्छाई, मैंने 6 घंटे से अधिक समय बिताया है और आखिरकार यह अधिकार मिल गया है! मेरा मानना ​​है कि यह पहली बार है जब मैंने इस postmessageचीज को देखा । Django + DRF + JWT + Social Auth + Reactसंयोजन पर काम करने वाला कोई भी व्यक्ति निश्चित रूप से इसमें दुर्घटना करेगा। मैं विश्वास नहीं कर सकता कि इस लेख का कोई भी उल्लेख नहीं करता है, यहाँ उत्तर को छोड़कर। लेकिन मैं वास्तव में उम्मीद करता हूं कि यदि आप Django + React स्टैक का उपयोग कर रहे हैं तो यह पोस्ट आपको बहुत समय बचा सकती है।


5

2015July15 - साइन इन जो लॉगिन पर इस स्क्रिप्ट के साथ पिछले सप्ताह काम कर रहा था

<script src="https://apis.google.com/js/platform.js" async defer></script>

काम करना बंद कर दिया और त्रुटि 400 के साथ शुरू कर दिया Error: redirect_uri_mismatch

और विवरण अनुभाग में: redirect_uri=storagerelay://...

मैंने इसे बदलकर इसे हल किया:

<script src="https://apis.google.com/js/client:platform.js?onload=startApp"></script>

एक ही त्रुटि 400 का सामना करना पड़ रहा है, लेकिन स्क्रिप्ट को बदलने से मेरे कॉर्डोवा वेब व्यू के अंदर काम नहीं किया।
निक स्पेसक

@NickSpacek कृपया जांचें कि क्या गायब दोहरे उद्धरण जिम्मेदार थे।
टोनी गिल

क्या आप मुझे मेरे सवाल में मदद कर सकते हैं? stackoverflow.com/questions/37307612/…
लैटेंटडेनिस

5

चेकलिस्ट:

  • httpया https?
  • &या &amp;?
  • अनुगामी स्लैश ( /) या खुला ?
  • (CMD/CTRL)+F, क्रेडेंशियल पेज में सटीक मिलान के लिए खोजें। अगर नहीं मिला तो गुमशुदा की तलाश करो।
  • जब तक Google इसे ताज़ा नहीं करता तब तक प्रतीक्षा करें। प्रत्येक आधे घंटे में हो सकता है यदि आप बार-बार बदल रहे हैं या यह पूल में रह सकता है। मेरे मामले में प्रभावी होने में लगभग आधा घंटा था।

4

मेरे मामले में, मेरा क्रेडेंशियल एप्लिकेशन प्रकार "अन्य" है। इसलिए मुझे Authorized redirect URIsक्रेडेंशियल पेज नहीं मिल रहा है । ऐसा लगता है कि एप्लिकेशन प्रकार: "वेब एप्लिकेशन" में दिखाई देता है। लेकिन आप फ़ाइल Download JSONप्राप्त करने के लिए बटन पर क्लिक कर सकते हैं client_secret.jsonयहां छवि विवरण दर्ज करें

Json फ़ाइल खोलें, और आप इस तरह के पैरामीटर पा सकते हैं "redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]:। मैं http: // localhost का उपयोग करना चुनता हूं और यह मेरे लिए ठीक काम करता है।


मेरी मदद करने के लिए कृपया stackoverflow.com/questions/41270512/…
अटूट

4

रीडायरेक्ट url केस संवेदी है।

मेरे मामले में मैंने दोनों को जोड़ा: http: // localhost: 5023 / AuthCallback / IndexAsync http: // localhost: 5023 / difcallback / indexasync


1
और URL के अंत में "/" अक्षर से सावधान रहें। कभी-कभी जरूरत होती है, दूसरों को नहीं।
अंजना

इसलिए हम लाइव वेबसाइटों के लिए भी अनुरोध के रूप में लोकलहोस्ट रख सकते हैं?
अटूट

4

उपरोक्त किसी भी समाधान ने मेरे लिए काम नहीं किया। नीचे किया था

अधिकृत रीडायरेक्ट url को - https: // localhost: 44377 / signin-google में बदलें

आशा है कि यह किसी की मदद करता है।


अगर हम लोकलहोस्ट का उपयोग करते हैं तो यह प्रकाशित वेबसाइट के लिए भी काम करेगा। मेरा मतलब है कि अगर एपीआई कंसोल में मैं लोकलहोस्ट रिक्वेस्ट यूआरआई जोड़ता हूं। जब वेब साइट लाइव हो जाएगी तो यह कैसे काम करेगा? या लाइव साइटों के लिए हमें एपीआई कंसोल में वास्तविक यूआरआई का एक और सेट लगाने की आवश्यकता है?
अटूट


3

उपयोगकर्ता ( omniauth-google-oauth2 डॉक्स से) रेल :

पटरियों में पुनर्निर्देशन के लिए फिक्सिंग प्रोटोकॉल मिसमैच

Rails.env पर आधारित OmniAuth में बस full_host सेट करें।

# config / initializers / omniauth.rb

OmniAuth.config.full_host = Rails.env.production? ? ' https://domain.com ': ' http: // localhost: 3000 '

याद रखें: अनुगामी "/" शामिल न करें


3

यदि आप इस ट्यूटोरियल का उपयोग करते हैं: https://developers.google.com/identity/sign-in/web/server-side-flow तो आपको "पोस्टमेज़ेज" का उपयोग करना चाहिए।

जाओ में यह समस्या तय की:

confg = &oauth2.Config{
        RedirectURL:  "postmessage",
        ClientID:   ...,
        ClientSecret: ...,
        Scopes:      ...,
        Endpoint:     google.Endpoint,
}

2

मेरे लिए यह इसलिए था क्योंकि 'अधिकृत पुनर्निर्देशित यूआरआई' सूची में मैंने गलत तरीके https://developers.google.com/oauthplayground/से https://developers.google.com/oauthplayground( /अंत में बिना ) के बजाय डाल दिया है ।


1

मुझे @ Bazyl का उत्तर पूरा करने दें: मुझे प्राप्त संदेश में, उन्होंने URI "http://localhost:8080/" (जो निश्चित रूप से, एक आंतरिक Google कॉन्फ़िगरेशन लगता है) का उल्लेख किया । मैंने उस एक के लिए अधिकृत यूआरआई को बदल दिया "http://localhost:8080/", और संदेश अब दिखाई नहीं दिया ... और वीडियो अपलोड हो गया ... एपीआईएस प्रलेखन बहुत लंगड़ा है ... हर बार जब मेरे पास Google एपिस के साथ काम करने के लिए कुछ होता है, तो मैं बस "भाग्यशाली" महसूस करते हैं, लेकिन इसके बारे में अच्छे प्रलेखन की कमी है .... :( हां, मुझे यह काम मिला है, लेकिन मुझे अभी तक न तो यह समझ में आया कि यह विफल क्यों हुआ, न ही यह क्यों काम किया ... केवल एक ही था वेब में URI की पुष्टि करने के लिए जगह, और यह client_secrets.json में कॉपी हो गई ... मुझे नहीं मिलता है अगर वहाँ एक तिहाई जगह है जहाँ एक ही URI लिखना चाहिए ... मुझे लगता है कि न केवल प्रलेखन बल्कि Google का GUI डिज़ाइन '


1

नए कंसोल में रीडायरेक्ट यूआरएल सेट करने के लिए संघर्ष करने वाला कोई भी व्यक्ति: API और प्रामाणिक -> क्रेडेंशियल -> OAuth 2.0 क्लाइंट आईडी -> अपने सभी रीडायरेक्ट यूआरएल को खोजने के लिए लिंक पर क्लिक करें


1

मुझे APIs और सेवाओं के तहत एक नई क्लाइंट आईडी बनाने की आवश्यकता थी -> क्रेडेंशियल्स -> क्रेडेंशियल्स बनाएं -> OAuth -> अन्य

तब मैंने अपने कमांड लाइन प्रोग्राम के साथ client_secret.json को डाउनलोड किया और उपयोग किया जो मेरे youtube खाते में अपलोड हो रहा है। मैं एक वेब ऐप OAuth क्लाइंट आईडी का उपयोग करने की कोशिश कर रहा था जो मुझे ब्राउज़र में रीडायरेक्ट URI त्रुटि दे रहा था।


0

इन जाँचों को करने का प्रयास करें:

  1. आईडी को कंसोल में और अपने एप्लिकेशन में। मैं इस तरह के "org.peredovik। $ {PRODUCT_NAME: rfc1034identitor.com" के सेट की गई बंडल आईडी को प्राथमिकता देता हूं
  2. जांचें कि क्या आपने टैब पर URL प्रकार जोड़े हैं जानकारी बस पहचानकर्ता और URL योजनाओं में अपनी बंडल आईडी टाइप करें, संपादक पर सेट भूमिका
  3. Cloud.google.com पर "एपीआई और ऑर्टिकल" -> "सहमति स्क्रीन" में अपने आवेदन के बारे में फ़ॉर्म भरें। "उत्पाद का नाम" आवश्यक फ़ील्ड है।

का आनंद लें :)


0

मेरे मामले में मुझे वेब एप्लिकेशन / इंस्टॉल किए गए एप्लिकेशन के लिए क्लाइंट आईडी प्रकार की जांच करनी थी।

इंस्टॉल किए गए एप्लिकेशन: http: // localhost [रीडायरेक्ट URIs] इस मामले में लोकलहोस्ट बस काम करता है

वेब एप्लिकेशन: आपको मान्य डोमेन नाम [रीडायरेक्ट URIs:] चाहिए


0

आपको जो करने की ज़रूरत है वह अपने डेवलपर कंसोल पर वापस जाएं और API और प्रामाणिक> सहमति स्क्रीन पर जाएं और उसे भरें। विशेष रूप से, उत्पाद का नाम।


इसके अलावा, किसी अन्य परियोजना में उपयोग किए जाने वाले उत्पाद नाम का उपयोग न करें। सुनिश्चित करें कि यह अद्वितीय है।
फ्लोरिसला


0

मुझे कंसोल, http: // xxxxx / क्लाइंट / एपी / स्प्रेडशीट / ऑस्ट्रिडायरेक्ट और एचटीटीपी: // लोकलहोस्ट में यूआरआई के दो अनुरोध थे ।

मैंने इस सवाल पर सभी शीर्ष प्रतिक्रियाओं की कोशिश की और पुष्टि की कि उनमें से कोई भी मेरी समस्या नहीं थी।

मैंने कंसोल से लोकलहोस्ट को हटा दिया, मेरे प्रोजेक्ट में मेरे client_secret.json को अपडेट किया, और बेमेल त्रुटि चली गई।


0

मैं गूगल साइन के साथ एक ही मुद्दा था, मैं अपने बाल खींचने के बारे में था !!! मैंने Google डेवलपर कंसोल में अपने क्रेडेंशियल्स को Google क्रेडेंशियल पैनल में सही ढंग से दर्ज किया था, यहाँ मेरा रीडायरेक्ट यूआरएल था:

https://www.example.com/signin-google

https://www.example.com/signin-google/

https://www.example.com/oauth2callback

https://www.example.com/oauth2callback/

हर बात ठीक लगती है? लेकिन यह तब भी काम नहीं आया जब तक कि मैंने www और समस्या के हल के बिना एक और जादुई Url नहीं जोड़ा मैंने साइनिन-Google url (जो डिफ़ॉल्ट Google कॉलबैक है) जोड़ा ।

इसे ध्यान में रखें (आपके डोमेन के आधार पर) आपको www urls के साथ और उसके बिना जोड़ने की आवश्यकता हो सकती है या नहीं


0

मेरे पास फ्रंटएंड ऐप और बैकएंड एपी है।

अपने बैकएंड सर्वर से मैं google api मारकर परीक्षण कर रहा था और इस त्रुटि का सामना कर रहा था। अपने पूरे समय के दौरान मैं सोच रहा था कि मुझे redirect_uriयह देने की आवश्यकता क्यों है क्योंकि यह सिर्फ बैकएंड है, फॉरएंड के लिए यह समझ में आता है।

जो मैं कर रहा था वह redirect_uriसर्वर से अलग (हालांकि वैध) दे रहा था (यह मानते हुए कि यह केवल प्लेसहोल्डर है, इसे केवल Google में पंजीकृत होना है) लेकिन टोकन कोड बनाने वाला मेरा फ़्रंट url अलग था। इसलिए जब मैं इस कोड को अपने सर्वर साइड परीक्षण (जिसके लिए रीडायरेक्ट-यूआरआई अलग था) में पारित कर रहा था, तो मैं इस त्रुटि का सामना कर रहा था।

तो यह गलती मत करो। सुनिश्चित करें कि आपका फ्रंटएंड redirect_uriआपके सर्वर के समान है क्योंकि Google इसका उपयोग प्रामाणिकता को मान्य करने के लिए करता है।


0

नीचे त्रुटि के कारण हैं: redirect_uri_mismatch समस्या तब होती है:

  1. अपने Google प्रोजेक्ट पर URL फ़ील्ड को खाली करें।
  2. रीडायरेक्ट URL आपकी साइट से मेल नहीं खाता है
  3. जरूरी! यह केवल कार्यशील डोमेन जैसे example.com, book.com आदि के साथ काम करेगा (स्थानीय होस्ट या AWS LB URL के साथ काम नहीं करता है)

डोमेन URL का उपयोग करने के लिए अनुशंसित


क्या किया जाना चाहिए गूगल हर समय गलत रीडायरेक्ट_यूरी परम उत्पन्न करता है? इसे लोकलहोस्ट के रूप में जनरेट किया जाता है: XXXXX एक रैंडम पोर्ट नंबर के साथ, क्लाइंट बनाने वाले रीडायरेक्ट यूरी को अनदेखा करता है।
ए। मकरेविच

0

आईडी बनाने के बिंदु पर सही पुनर्निर्देशित यूआरएल इनपुट करने के लिए चाल है। मैंने पाया कि एक बार 'एडिट' के जरिए आईडी बनाए जाने के बाद रीडायरेक्ट यूआरएल को अपडेट करने से काम पूरा नहीं होता। मेरे लिए जो काम किया गया वह पूरे 'वेंडर' फोल्डर को डुप्लिकेट कर रहा है और इसे उसी स्थान पर कॉपी कर रहा है जहां 'ऑउथ' फाइल है (जब तक आप सफलतापूर्वक टोकन जेनरेट नहीं करते हैं और तब आप डुप्लिकेट 'वेंडर' फोल्डर को हटा सकते हैं)। ऐसा इसलिए है क्योंकि '../vendor/autoload' के माध्यम से विक्रेता फोल्डर को इंगित करने की कोशिश कर रहा था।

तो, अपने मौजूदा परेशान ग्राहक OAuth ID को हटा दें और इस दृष्टिकोण की कोशिश करें, यह काम करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.