2016-03-01 5 views
5

में Google उपयोगकर्ता सर्वरAuthCode शून्य IOS ऐप में GoogleSignIn ढांचे को एकीकृत करने और सर्वर पर किसी उपयोगकर्ता को प्रमाणीकृत करने का प्रयास कर रहा हूं। मैं उपयोगकर्ता में लॉग इन करने में कामयाब रहा, लेकिन - (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user withError:(NSError *)error प्रतिनिधि विधि में, user.serverAuthCodenil है, और मुझे सर्वर पर उपयोगकर्ता प्रमाणीकृत करने के लिए, इस सर्वर प्रमाणीकरण कोड को पास करने की आवश्यकता है।उद्देश्य-सी

मैं this documentation page पढ़ सकते हैं और यह कहा गया [GIDSignIn sharedInstance] की serverClientID गुण सेट करने के लिए है कि मैं, लेकिन कहीं नहीं यह कहा गया है, जहां मैं इस "सर्वर क्लाइंट id" मिल रहा है है। मैंने दुनिया में सभी चाबियों के साथ परीक्षण नहीं किया।

मुझे तब this documentation page पता चला जो ऐसा लगता है कि यह हमें यह बताने की कोशिश कर रहा है कि यह जादुई आईडी कहां ढूंढें, लेकिन यह खराब शब्द का उपयोग कर रहा है और मदद नहीं करता है। मैं प्रकार Web application साथ OAuth2 साख है, लेकिन:

  1. वे वेब (ग्राहक) अनुप्रयोग, कि मेरे iOS एप्लिकेशन है, जो भी सर्वर
  2. मैं इसे का उपयोग कर की कोशिश की के साथ संचार से मेल खाती है के लिए उपयोग किया जाता है, और यह काम नहीं किया।

किसी को भी सफलतापूर्वक गूगल (गरीब) प्रलेखन के चंगुल से भागने में सफल हो गए थे?

उत्तर

5

सिम्युलेटर में यह चलाने की कोशिश करें नहीं :)

+0

यह काम किया, धन्यवाद! –

+4

यह मेरे लिए भी डिवाइस पर होता है .. सर्वरऑथकोड शून्य –

+0

डाउनवोट क्यों है?!? –

1

आप plist में client_id पा सकते हैं, और server_client_id आप API कंसोल प्रबंधक के माध्यम से प्राप्त कर सकते हैं।

आपको पहले ऐप को हटाना होगा, फिर इसे फिर से करने का प्रयास करें, सिम्युलेटर या डिवाइस, यह काम करेगा।

+0

नहीं, यह नहीं था .. –

1

इस विन्यास का प्रयोग करें एक serverAuthCode कि nil नहीं है पाने के लिए:

NSError *configureError; 

[[GGLContext sharedInstance] configureWithError:&configureError]; 

NSAssert(!configureError, @"Error configuring Google services: %@", configureError); 

[GIDSignIn sharedInstance].clientID = @"88.....apps.googleusercontent.com"; 
[GIDSignIn sharedInstance].serverClientID = @"88.....apps.googleusercontent.com" ; 
[GIDSignIn sharedInstance].shouldFetchBasicProfile = YES; 
[GIDSignIn sharedInstance].scopes = @[@"email", @"profile"]; 

कहाँ:

  • clientIDGoogleService-Info.plist से REVERSED_CLIENT_ID का मूल्य उपयोग करता है।
  • serverClientIDGoogle Console से संबंधित मान का उपयोग करता है।
+0

क्या '[GGLContext configWithError]' आवश्यक है? क्या '@" ईमेल "' और '@" प्रोफ़ाइल "' scopes आवश्यक हैं? (क्या 'चाहिएफैचबैसिकप्रोफाइल' स्वचालित रूप से उनको जोड़ नहीं सकता है?) – aleclarson

2

आपको यह सुनिश्चित करने की ज़रूरत है कि [GIDSignIn sharedInstance].serverClientID संपत्ति सेट है; मूल्य Google API कंसोल में पाया जा सकता है।

इसके अलावा, अगर आपको nil मान के साथ मिला है, तो सुनिश्चित करें कि आपने बाद में प्रयासों से पहले [[GIDSignIn sharedInstance] signOut]; कहा है। अन्यथा [GIDSignIn sharedInstance] पिछले कॉन्फ़िगरेशन को याद रखना प्रतीत होता है।

मुझे सिम्युलेटर में serverAuthCode प्राप्त करने में कोई समस्या नहीं है। user बजाय से

+0

'साइनऑट' भाग काम करता है। नए कोड को आजमाने से पहले साइन आउट करना सुनिश्चित करें। –

0

प्राप्त पहुँच टोकन:

NNString* accessToken = user.authentication.accessToken; 
+0

क्या आप वाकई सर्वर ऑथ कोड एक्सेस टोकन के समान हैं? –

+0

@IulianOnofrei आप सर्वर पक्ष पर पहुंच टोकन प्राप्त करने के लिए ऑथ कोड का उपयोग कर रहे हैं, है ना? सीधे टोकन का उपयोग क्यों न करें। –

1

एक ही समस्या थी। GIDSignIn.sharedInstance().serverClientIDGIDSignIn.sharedInstance().clientID जैसा ही है। serverClientId भी सेट करके हल किया गया।