2015-06-02 6 views
11

लैरवेल 5, सोशलाइट, और Google/apiclient पैकेज।लार्वेल सोशलाइट + लॉगिन एपीआई कॉल के बाद कॉलिंग

स्रोत कोड: https://github.com/svpernova09/meatings

मैं में उन प्रवेश करने के लिए गूगल के साथ ठीक काम कर रहा सोशलाइट है

मैं के रूप में उपयोगकर्ता के प्रवेश कैलेंडर घटनाओं को लाने के लिए एक अलग तरीके में एक API कॉल करने के लिए कोशिश कर रहा हूँ। । मैं कहां से उपयोग करने के लिए टोकन के साथ फंस रहा हूँ।

त्रुटि मैं हो रही है:

"त्रुटि": "invalid_grant",

"ERROR_DESCRIPTION": "कोड पहले से ही कर लिया गया था।"

मेरे विधि:

public function show($user_id) 
{ 
    $user = $this->user->find($user_id); 

    $client = new Google_Client(); 
    $client->setClientId(env('GOOGLE_CLIENT_ID')); 
    $client->setClientSecret(env('GOOGLE_CLIENT_SECRET')); 
    $client->setRedirectUri(env('GOOGLE_CALLBACK_URL')); 

    $client->authenticate($user->code); 
    $service = new Google_Service_Calendar($client); 

    $calendarId = $user->calendar_id; 
    $optParams = array(
     'maxResults' => 5, 
     'orderBy' => 'startTime', 
     'singleEvents' => TRUE, 
     'timeMin' => date('c'), 
    ); 
    $results = $service->events->listEvents($calendarId, $optParams); 
    $events = []; 
    if (count($results->getItems()) > 0) { 
     foreach ($results->getItems() as $event) { 
      $events[] = $event; 
     } 
    } 

    return view('users.calendar')->with('events', $events); 
} 

Laravel उत्पादन होता है: OAuth2.php लाइन में

Google_Auth_Exception 127: लाने में त्रुटि हुई OAuth2 पहुँच टोकन, संदेश: 'invalid_grant'

$ उपयोगकर्ता-कोड इस तरह दिखता है: 4/hfPzDrOHyaEv3asdfadsfasdfDw72nXIl0rt2boUpGj7h एम.यूएम 5wPgCeasdfasdfafd1t6qxkmwI

कोई मार्गदर्शन बहुत अच्छा होगा। मुझे Google गाइड के साथ कहीं भी नहीं मिल रहा है।

+0

इस बिंदु पर, क्या आप पहले से ही प्रमाणित नहीं हैं? यह कहता है कि कोड पहले से ही रिडीम किया गया था और आपके पास पहले से ही एक टोकन पहुंच है। –

+0

हां, उपयोगकर्ता पहले ही प्रमाणीकृत है, मेरे पास टोकन है कि सोशलाइट वापस आ गया है, लेकिन जब मैं अगली एपीआई अनुरोध (इस विधि) को लिखने का प्रयास करता हूं तो मुझे 'अमान्य अनुदान' त्रुटियां मिलती हैं – joepferguson

+4

@ जो पहुंच को रद्द करके टोकन को रीफ्रेश करने का प्रयास करें और reauthenticating। आपको एक अलग दायरे का भी उपयोग करना पड़ सकता है। डिफ़ॉल्ट रूप से, सोशलाइट केवल कुछ स्कोप का उपयोग करता है, मुझे विश्वास है कि _profile_ और _email_। आपको Google API दस्तावेज़ों में _calendar_ या _calendar.readonly_ scopes जोड़ना होगा। – brokekidweb

उत्तर

1

कैलेंडर सामाजिक लॉगिन से भिन्न भिन्नता का उपयोग करता है। आपको फिर से अनुमति मांगनी है। आप Calendar API के दस्तावेज़ों की जांच कर सकते हैं और इसे Google Playground पर आज़माएं।

Google भी देता है "कोड पहले से ही रिडीम किया गया था।" क्योंकि आपके पास पहले से ही आपके कोड के साथ उपयोगकर्ता की सार्वजनिक जानकारी के लिए पहुंच टोकन है।

संबंधित मुद्दे