1

Ich versuche, Personen in Benutzerkreisen abzurufen. Da GPPSignin entzogen ist, verwende ich GIDSignIn für die Anmeldung. Die von GIDSignIn zur Verfügung gestellte Authentifizierung ist jedoch vom Typ GIDAuthentication und kann nicht in GTLServicePlus verwendet werden.Personen aus Google+ Kreisen abrufen iOS

Ich habe mich erfolgreich mit GIDSignInButton angemeldet. Hier ist mein Code Leute

GTLServicePlus* plusService = [[[GTLServicePlus alloc] init] autorelease]; 
plusService.retryEnabled = YES; 

[plusService setAuthorizer:[GPPSignIn sharedInstance].authentication]; //Problem is here 
GTLQueryPlus *query = 
[GTLQueryPlus queryForPeopleListWithUserId:@"me" 
           collection:kGTLPlusCollectionVisible]; 
[plusService executeQuery:query 
    completionHandler:^(GTLServiceTicket *ticket, 
         GTLPlusPeopleFeed *peopleFeed, 
         NSError *error) { 
     if (error) { 
      GTMLoggerError(@"Error: %@", error); 
     } else { 
      // Get an array of people from GTLPlusPeopleFeed 
      NSArray* peopleList = [peopleFeed.items retain]; 
     } 
    }]; 
+0

Haben Sie dieses Problem gelöst? –

+0

@AlexanderVolkov Ich erstelle derzeit manuell das GTMOAuth2Authentication-Objekt und weist ihm alle erforderlichen Felder zu, clientID, userEmail, userID, accessToken, refreshToken, expirationDate. Es funktioniert vorerst. –

+0

Sie verwenden also beide Frameworks - altes Goolge Plus SDK und Google Sign-In, korrekt? Können Sie bitte ein Beispiel geben? Haben Sie versucht, Google Plus Web API zu verwenden oder? –

Antwort

0

Liste abrufen So bin ich zur Zeit dieses Problem zu lösen, indem Sie manuell GTMOAuth2Authentication Objekt erstellen und die erforderlichen Werte zuweisen. Dies ist mein aktueller Code.

func fetchGPlusContacts() { 

    let plusService = GTLServicePlus() 
    plusService.retryEnabled = true 

    let user = signIn.currentUser 
    let auth = GTMOAuth2Authentication() 

    auth.clientID = signIn.clientID 
    auth.userEmail = user.profile.email 
    auth.userID = user.userID 
    auth.accessToken = user.authentication.accessToken 
    auth.refreshToken = user.authentication.refreshToken 
    auth.expirationDate = user.authentication.accessTokenExpirationDate 

    plusService.authorizer = auth 

    let query = GTLQueryPlus.queryForPeopleListWithUserId("me", collection: kGTLPlusCollectionConnected) as! GTLQueryPlus 


    plusService.executeQuery(query) { (ticket, peopleFeed, error) in 
     if (error != nil) { 
      print("error: \(error.description)") 

      if (self.delegate != nil) { 
       if self.delegate?.failedFetchFriendsFromGoogle != nil { 
        self.delegate!.failedFetchFriendsFromGoogle!(error) 
       } 
      } 
     } 
     else { 
      if let peopleFd = peopleFeed as? GTLPlusPeopleFeed { 
       var items : [GTLPlusPerson] = [] 
       if let itms = peopleFd.items() as? [GTLPlusPerson] { 
        items = itms 
       } 
      } 
     } 
    } 
} 

Ich bin immer noch auf der Suche nach dem richtigen Weg, um diese Aufgabe zu erfüllen.