2016-05-16 13 views
4

Firebaseを使用してソーシャルメディアにログインするアプリにGoogleのログイン情報を追加しました。私は現在、Googleユーザーの友人にアクセスしようとしています。友だちや連絡先のリストを返すので、現在アプリを使用しているかどうかを調べることができます。iOSのAPIを使用してGoogleの連絡先を取得する

これまでの情報はほとんど見つかりませんでした。

類似した質問に回答していない多数のstackoverflow質問があります。thing

Google APIがGoogle+ログインからGoogle Signin APIに更新されました。これは、以前にはの共有が見つかりましたが、現在ははるかに少ない情報であるavailableです。

これは、answersの一部が今では償却される可能性が高いことを意味します。

answersという番号もありますが、これはできません。

私の問題は、昨年に何の回答も質問もなく、新しいGoogleSignInがちょうど1年以上前にreleasedであったことです。

GIDGoogleUserオブジェクトでログインしたときに、ユーザーの友だちや連絡先のリストを検索することが可能かどうかを知りたいと思います。理想的には、私はそれらについていくつかの情報を返すだろうが、それがちょうど彼らの名前であっても、これで十分だろう。

Facebook APIを使用すると、アプリにログインしたユーザーの詳細を返すことができますが、すべてのユーザーには反映されません。 Googleには似たようなものがありますか、それとも公式のAPIを使ってこれを行う方法はありません。

これが可能かどうかについての助けがあれば、私のアプリで次の動きを計画できるようになるのに非常に役立ちます。

+0

こんにちは..これを行う方法はありますか?私はこれに対する解決策も探しています。 – va05

+0

私はこれに取り組んでいます。私はそこにGoogle APIが設定されているとは思わないので、認証されたGoogleのURLで手動AFNetworkingリクエストを試みています。こちらのURLのように:https://developers.google.com/+/domains/api/circles/get#requestブレイクスルーがあればコメントや回答を投稿してください –

+0

連絡先にアクセスできるかどうか教えてくださいアプリケーションに追加します。私も現在のプロジェクトで同じ要求を持っています – Dee

答えて

5

この質問は、過去数年間のGoogle APIバージョンの数と、ユーザーが実際にGoogleの詳細でどの程度ログインしているかということで難しくなりました。これは、要求の不足のためにほとんど文書がないことを意味します。私は最終的にそれがアプリケーションコードによってthisすばらしい速いチュートリアルの助けを借りて働くように管理しました。このチュートリアルは、サインインプロセスを段階的に進めるだけでなく、私が後にしていたコンタクトルックアップをカバーすることも稀です。

このチュートリアルを終了して終了することをおすすめしますが、ここで最も重要な情報もいくつか入れておきます。

最初に行うことは、Googleコンソールにアプリを正しく追加したことです。 Google+ APIを追加してクライアントIDを取得してください。

第2に、Googleログインを設定する必要があります。これは簡単で、これを設定するための優れたリソースがあります。私はthis GoogleのYouTubeビデオをお勧めしますが、他にも多くのオンラインリソースがあります。私はこれが問題のポイントではないので、詳細には進まない。

次は、サインインコードを設定する必要があります。

があなたのViewController

<GIDSignInDelegate, GIDSignInUIDelegate 

ものviewDidLoadでそれを構成しに代表者の両方を追加したことを確認してください:私は他の場所で見つかった答えの

[GIDSignIn sharedInstance].delegate = self; 
[GIDSignIn sharedInstance].uiDelegate = self; 
[GIDSignIn sharedInstance].clientID = @"123456789012-thisismadeup123456789.apps.googleusercontent.com"; 

[[GIDSignIn sharedInstance] setScopes:@[@"https://www.googleapis.com/auth/plus.login", @"https://www.googleapis.com/auth/plus.me"]]; 

なし、私は(私のクライアントIDを設定しませんでしたGoogleのコンソールから)、重要な部分はスコープのコードを追加することです。これがなければ、連絡先を取得するための正しいアクセス権が得られません。

この段階では、すべてが正しく設定されているかどうかを確認できます。アプリを読み込んでGoogleログインボタンをクリックすると、ウェブビューが読み込まれ、権限を確認するように求められます。重要な権限が上位2つです

enter image description here

:それは次のようになります。下の2つしかない場合は、自分のプロフィールにアクセスでき、あなたの友人のプロフィールにはアクセスできません。

これまでのところ、正しいAPI呼び出しを実行して友だちを返すだけで済みます。これは、異なるGoogleのウェブサイト上の異なる数の純粋な数で行われるよりも簡単です。私は次のように鉱山を完了:

NSString * urlString = [NSString stringWithFormat:@"https://www.googleapis.com/plus/v1/people/me/people/visible?access_token=%@", [GIDSignIn sharedInstance].currentUser.authentication.accessToken]; 

AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager]; 

AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments]; 
manager.responseSerializer = responseSerializer; 

[manager GET:path parameters:params success:^(AFHTTPRequestOperation * operation, id responseObject) { 

    if (![responseObject isEqual: [NSNull null]]) { 

     if(responseObject[@"error"]) { 
      NSError * error = [NSError errorWithDomain:@"" code:0 userInfo:@{NSLocalizedDescriptionKey: responseObject[@"error"]}]; 
     } 
     else { 
      // We now have our response object 
     } 
    } 
    else { 
     // response is nil 
    } 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    // Failure 
}]; 

あなたは、あなたのプロジェクトにAFNetworkingを追加する必要がありますし、これがそう過ぎて可能なコピーされない場合があります私のプロジェクトのためのカスタム関数です。

これはあなたが使用できるすべての連絡先の辞書を返します。

+0

非常に良い詳細な質問と回答。それは私のために働いていました。 Gmailの連絡先をすべて取得できる方法はありますか? – Haris

関連する問題