2015-03-03 7 views
5

मैं वाईआई 2, GoogleOAuth और yii2-user एक्सटेंशन का उपयोग कर रहा हूं। मैं उपयोगकर्ता गूगल हलकों प्राप्त करते हैं और मेरी config करने के लिए गुंजाइश सेट करना चाहते हैं: जब मैं गूगल OAuth2 के साथ प्रवेशyii2, google outh2 और scope

'authClientCollection' => [ 
     'class' => 'yii\authclient\Collection', 
     'clients' => [ 
      'google' => [ 
       'class' => 'yii\authclient\clients\GoogleOAuth', 
       'clientId' => '758709912345-p4qp4lqihit5un1u6qb75msqp5m5j6d8.apps.googleusercontent.com', 
       'clientSecret' => 'ZygOIi1-0asfktUQ1pKOFOo', 
       'scope' => 'https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/drive', 
      ], 
     ], 
    ] 

मैं था त्रुटि:

Exception – yii\authclient\InvalidResponseException Request failed with code: 400, message: { "error" : "redirect_uri_mismatch" }

गूगल प्रतिक्रिया:

[ 
'url' => 'https://accounts.google.com/o/oauth2/token' 
'content_type' => 'application/json' 
'http_code' => 400 
'header_size' => 435 
'request_size' => 644 
'filetime' => -1 
'ssl_verify_result' => 0 
'redirect_count' => 0 
'total_time' => 0.115431 
'namelookup_time' => 0.001186 
'connect_time' => 0.025188 
'pretransfer_time' => 0.076275 
'size_upload' => 456 
'size_download' => 39 
'speed_download' => 337 
'speed_upload' => 3950 
'download_content_length' => -1 
'upload_content_length' => 456 
'starttransfer_time' => 0.114206 
'redirect_time' => 0 
'certinfo' => [] 
'primary_ip' => '2a00:1450:4010:c08::54' 
'primary_port' => 443 
'local_ip' => '2a03:6f00:1::5c35:726b' 
'local_port' => 33160 
'redirect_url' => '' 

]

जब मैंने कॉन्फ़िगरेशन से हटा दिया Google+ स्कोप (https://www.googleapis.com/auth/plus.login) प्रमाणीकरण wi केवल https में

[ 
'url' => 'https://accounts.google.com/o/oauth2/token' 
'content_type' => 'application/json; charset=utf-8' 
'http_code' => 200 
'header_size' => 522 
'request_size' => 526 
'filetime' => -1 
'ssl_verify_result' => 0 
'redirect_count' => 0 
'total_time' => 0.13719 
'namelookup_time' => 0.001212 
'connect_time' => 0.026261 
'pretransfer_time' => 0.079765 
'size_upload' => 338 
'size_download' => 900 
'speed_download' => 6560 
'speed_upload' => 2463 
'download_content_length' => -1 
'upload_content_length' => 338 
'starttransfer_time' => 0.136241 
'redirect_time' => 0 
'certinfo' => [] 
'primary_ip' => '2a00:1450:4010:c08::54' 
'primary_port' => 443 
'local_ip' => '2a03:6f00:1::5c35:726b' 
'local_port' => 37583 
'redirect_url' => '' 

]

समस्या:: त्रुटि बाहर th और गूगल प्रतिक्रिया है //www.googleapis.com/auth/plus.login। मेरी सक्षम एपीआई: http://minus.com/lJ5nw7caXJApD

+0

सिर्फ एक यह नहीं कि 'https: // www.googleapis.com/auth/userinfo.email' को बहिष्कृत किया गया है। आपको इसके बजाय 'ईमेल' का उपयोग करना चाहिए। [डॉक्स] देखें (https://developers.google.com/+/api/oauth) – Tahir

+0

यदि मैं केवल https://www.googleapis.com/auth/plus.login को दायरे में डालता हूं तो मुझे एक ही त्रुटि है "redirect_uri_mismatch "। – 1Pauletto

+0

आप जानते हैं कि यह त्रुटि 'रेडियरेक्ट यूआरआईएस' से संबंधित है जिसे आपको Google कंसोल में अपने ऐप क्रेडेंशियल में सेट करने की आवश्यकता है, है ना? यह आपके 'auth' कार्रवाई के लिए यूआरएल होना चाहिए। – Tahir

उत्तर

4

आप अपने ऑथ क्लाइंट कॉन्फ़िगरेशन में स्पष्ट रूप से returnUrl भी जोड़ सकते हैं। अधिक जानकारी के लिए docs पर देखें।

+0

मुझे यह \t परीक्षण और त्रुटि विधि के माध्यम से मिला। इसके बारे में कोई समझदार मैनुअल नहीं। – Adobe

3

मैं भी इस समस्या का सामना करना पड़ रहा था और नीचे की तरह परियोजना साख में पुनर्निर्देशन यूआरआई बदलने का हल मिल गया:

पुनर्निर्देशन यूआरआई

http://mysiteurl.com/user/sign-in/oauth?authclient=google 
http://mysiteurl.com/oauth2callback 

जावास्क्रिप्ट मूल

http://mysiteurl.com 
1
Use return URL in main.php like 

'authClientCollection' => [ 
      'class' => 'yii\authclient\Collection', 
      'clients' => [ 
      'facebook' => [ 
       'class' => 'yii\authclient\clients\Facebook', 
       'authUrl' => 'https://www.facebook.com/dialog/oauth?display=popup', 
       'clientId' => ['FacebookClientId'], 
       'clientSecret' => ['FacebookClientSecret'], 
       'attributeNames' => ['name','first_name','last_name','email','gender','picture','age_range'] 
      ], 
      'google' => [ 
       'class' => 'yii\authclient\clients\Google', 
       'clientId' => ['GoogleClientId'], 
       'clientSecret' => ['GoogleClientSecret'], 
       'returnUrl' => 'http://yoursite.com/site/auth?authclient=google' 
      ], 
      ], 
     ], 


Also set redirect_url in api credentials same as return url 

It's work for me.