準備工作:
在Enable Google Services for your App注冊一個App,然后把GoogleService-Info.plist下載下來,備用。
接下來需要往接入的項目中做點“手腳”:
一、導入GoogleLogin的SDK(可以手動拖入也可以用pod管理)
pod引入方式 cocoapods
pod 'GoogleSignIn' 需要注意無論哪種方式都需要依賴一下庫,如果沒有請加上:
- LocalAuthentication.framework
- SafariServices.framework
- SystemConfiguration.framework
二、配置URLType,如圖:
URL Schemes是顛倒的Client_ID,Client_ID可以從GoogleService-Info.plist中獲取到;
三、初始化
AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GIDSignIn sharedInstance].clientID = kClientID; //GoogleService-Info.plist 中的CLIENT_ID }- (BOOL)application:(nonnull UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<NSString *, id> *)options {
return [[GIDSignIn sharedInstance] handleURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
}
四、使用
LoginViewController:
這里可以用Google提供的GoogleSigInButton也可以自定義,自定義需要自己實現一些代理方法,自定義如下:
LoginViewController
#pragma mark - 自定義按鈕的點擊事件 - (void)googleSignIn:(UIButton *)sender { GIDSignIn *signIn = [GIDSignIn sharedInstance]; signIn.shouldFetchBasicProfile = YES; signIn.delegate = self; signIn.uiDelegate = self; [signIn signIn];}
#pragma mark - Google SignInDelegate - (void)signIn:(GIDSignIn *)signIn presentViewController:(UIViewController *)viewController { [self presentViewController:viewController animated:YES completion:nil];}- (void)signIn:(GIDSignIn *)signIn dismissViewController:(UIViewController *)viewController { [self dismissViewControllerAnimated:YES completion:nil];}
//登錄回調#pragma mark - GIDSignInDelegate - (void)signIn:(GIDSignIn*)signIn didSignInForUser:(GIDGoogleUser*)user withError:(NSError*)error {
if(error) { //[self ShowExclaHud:@"授權失敗"]; [TPProgressUtils showError:NSLocalizedString(@"ty_author_failure", nil)];
} else { NSString*token = user.authentication.idToken; NSString *countryCode = self.selectCountryView.countryCode; //獲得返回數據resultDic實現客戶端登錄
}}
以上代碼根據實際情況需要進行一個簡單的封裝,不能直接堆疊在對應的類中,會不太友好。
在做Google登錄調試的時候,由于我們服務端只在外國區發布接口,所以我們需要將APP的域名切換到國外
到這里基本上APP端要做的事情就算集成完成了, 其實還是蠻簡單的,沒有什么復雜的過程,剩下的就和和服務端聯調,一定要注意的是,服務端的client_id一定要和APP的對應(同一個應用拿到的Client_ID),不然服務端那邊驗證一直不會通過。剛開始我們就都以為各自的ID是正確的,這是一個蛋疼的聯調過程。對以上有任何問題都可call me。大家一起踩坑。。。。
最后,科學上網。。。你懂得!!!
手機瀏覽
全國
19974831731






