2016-05-16 95 views
4

我已將Google登錄信息添加到使用Firebase登錄社交媒體的應用程序中。我現在試圖訪問Google用戶的朋友。我想返回一個朋友/聯繫人列表,以便我可以搜索他們是否正在使用該應用程序。使用iOS上的API獲取Google聯繫人

到目前爲止,我已經找到了非常少的信息。

有許多的這是沒有答案,詢問類似的thing計算器的問題。

Google API已從Google+登錄更新爲Google Signin API,這意味着雖然之前我們可以找到共享code,但他們的信息更少available

這意味着,一些answers似乎有可能由現在貶值。

也有一些answers是說,這是不可能做到這一點。

我的問題是,去年似乎沒有任何答案或問題,並且剛剛在一年前新的GoogleSignIn僅爲released

我想知道是否可以檢索用戶的朋友或聯繫人列表,以任何方式,形狀或用GIDGoogleUser對象登錄時形成。理想情況下,我會返回一些關於他們的信息,但即使只是他們的名字,這也足夠了。

Facebook API允許用戶返回登錄到應用但不是所有用戶的用戶的詳細信息。是否有類似的東西我缺少谷歌或目前沒有辦法,使用官方的API來做到這一點。

任何關於這是否可能的幫助都會對我計劃下一步的應用很有幫助。

+0

嘿..你有什麼辦法做到這一點..?我也在尋找解決方案。 – va05

+0

我正在繼續爲此工作。我不認爲它有一套Google API,因此我正在嘗試對經過驗證的Google網址進行手動AFNetworking請求。像這裏的其中一個網址:https://developers.google.com/+/domains/api/circles/get#request如果您有任何突破,請發表評論或回覆 –

+0

如果您能夠訪問聯繫人,請讓我知道到你的應用程序中我也有同樣的要求在我目前的項目 – Dee

回答

5

這個問題在過去幾年變得更加困難由谷歌API版本的數量,以及如何很少的用戶確實與其谷歌詳情登錄。這意味着由於缺乏需求而幾乎沒有文件。我終於設法通過App Code的this偉大的快速教程幫助它工作。本教程很少見,因爲它會逐步完成整個登錄過程,並涵蓋了我之後的聯繫方式。

我會建議通過本教程開始完成,但我也會在這裏提出一些最重要的信息。

做的第一件事是確定您已經正確添加您的應用程序的谷歌控制檯。確保添加Google+ API並獲取您的客戶ID。

其次,您需要設置您的Google登錄。這非常容易,並且有一些很好的資源可用於設置。我會推薦this谷歌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"]]; 

我在別處找到了問題的答案都沒有我的設置我的clientID的(從谷歌控制檯),但重要的部分是添加範圍代碼,沒有這你沒有得到正確的權限來獲取聯繫人。

在這個階段,你可以檢查一切是否設置正確。加載你的應用程序並點擊Google登錄按鈕,它應該加載webview並要求你確認你的權限。它應該是這樣的:

enter image description here

重要的權限是前兩名。如果你只有最低兩位,你將只能訪問你自己的個人資料,而不能訪問你的朋友。

一旦你有這麼多,你只需要執行正確的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

相關問題