2016-10-20 8 views
0

私のアプリにGoogleコンタクトAPIを統合する際に問題がたくさんあります。基本的に私が必要とするのは、ユーザーに許可を要求し、ユーザーのすべてのGmail連絡先(名前と電子メール)を取得することです。参考のためSwift 3アプリにGoogle Contacts APIを統合

、Googleの連絡先APIである場合、これは次のとおりです。 https://developers.google.com/google-apps/contacts/v3/

私は既にGoogleサインインが正しく実装しており、ユーザーがそのように認証されました。 401は、認証されていません、私は本当にないですので明白です:

func retrieveContacts(){ 

     let clientID = "blabla-5blablablabla9gisc.apps.googleusercontent.com" 
     let clientSecret = "blablablaDXEwmgilOXgVsQ" 

    //How do I ask permission to the user to look at their contacts? 
     let url2 = URL(string: "https://www.googleapis.com/auth/contacts.readonly") 

     let user = GIDSignIn.sharedInstance().currentUser 
     //let name = user?.profile.name 
     let email = user?.profile.email 

     var url = URL(string:"") 

     if let aEmail = email{ 
     url = URL(string: "https://www.google.com/m8/feeds/contacts/\(aEmail)/full") 
      print(email) 
     } 
let task = URLSession.shared.dataTask(with: url!) { data, response, error in 
      guard error == nil else { 
       print(error) 
       return 
      } 
      guard let data = data else { 
       print("Data is empty") 
       return 
      } 

      print(response) 
     } 

     task.resume() 
    } 

は今、私はエラーコードを取得しています:私は本当に一緒にすべてのピースを置くのに苦労しています

、ここで私がこれまでしているものですどこにでもユーザに許可を要求します。

+0

Google apiから連絡先をすぐに取得できますか?もしそうなら、私を案内してください。 – Dee

+0

このライブラリを見てください。これが私の助けになりました。 https://github.com/jackfreeman/GoogleContactsAppSwift –

+0

よろしいですか。ありがとうございました。 n.by.nで提案されているコードを実行できますが、「JSONはエラーのためシリアル化できませんでした: 正しい形式でないため、データを読み取れませんでした。 – Dee

答えて

-1

Xcodeの8スウィフト3

あなたは完全な連絡先のリストを取得するには、連絡先APIのバージョンと一緒にあなたの要求にアクセストークンを送信する必要があります。

func getGoogleContacts() { 

    let urlString = "https://www.google.com/m8/feeds/contacts/default/full?access_token=\(GIDSignIn.sharedInstance().currentUser.authentication.accessToken!)&max-results=\(999)&alt=json&v=3.0" 

    Alamofire.request(urlString, method: .get) 
     .responseJSON { response in 

      switch response.result { 
      case .success(let JSON): 
       print(JSON as! NSDictionary) 
      case .failure(let error): 
       print(error.localizedDescription) 
      } 
    } 

} 
+0

私はこのコードを実行することができますが、「JSONはエラーのためにシリアル化できませんでした:データが正しい形式でないために読み込めませんでした。理由は何でしょうか? – Dee

関連する問題