| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- /*
- * Copyright 2019 Google
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- #import "MainViewController+OAuth.h"
- #import "AppManager.h"
- #import "FIROAuthProvider.h"
- #import "MainViewController+Internal.h"
- NS_ASSUME_NONNULL_BEGIN
- @implementation MainViewController (OAuth)
- - (StaticContentTableViewSection *)oAuthSection {
- __weak typeof(self) weakSelf = self;
- return [StaticContentTableViewSection sectionWithTitle:@"OAuth" cells:@[
- [StaticContentTableViewCell cellWithTitle:@"Sign in with Google"
- action:^{ [weakSelf signInGoogleHeadfulLite]; }],
- [StaticContentTableViewCell cellWithTitle:@"Sign In with Twitter (headful-lite)"
- action:^{ [weakSelf signInTwitterHeadfulLite]; }],
- [StaticContentTableViewCell cellWithTitle:@"Sign In with Linkedin"
- action:^{ [weakSelf signInLinkedinHeadfulLite]; }],
- [StaticContentTableViewCell cellWithTitle:@"Sign In with GitHub (access token)"
- action:^{ [weakSelf signInWithGitHub]; }],
- [StaticContentTableViewCell cellWithTitle:@"Sign In with GitHub (headful-lite)"
- action:^{ [weakSelf signInGitHubHeadfulLite]; }],
- [StaticContentTableViewCell cellWithTitle:@"Sign in with Microsoft"
- action:^{ [weakSelf signInMicrosoftHeadfulLite]; }],
- [StaticContentTableViewCell cellWithTitle:@"Sign In with Yahoo"
- action:^{ [weakSelf signInYahooHeadfulLite]; }],
- ]];
- }
- - (void)signInGoogleHeadfulLite {
- FIROAuthProvider *provider = self.googleOAuthProvider;
- provider.customParameters = @{
- @"prompt" : @"consent",
- };
- provider.scopes = @[ @"profile", @"email", @"https://www.googleapis.com/auth/plus.me" ];
- [self showSpinner:^{
- [[AppManager auth] signInWithProvider:provider
- UIDelegate:nil
- completion:^(FIRAuthDataResult *_Nullable authResult,
- NSError *_Nullable error) {
- [self hideSpinner:^{
- if (error) {
- [self logFailure:@"sign-in with provider (Google) failed" error:error];
- } else if (authResult.additionalUserInfo) {
- [self logSuccess:[self stringWithAdditionalUserInfo:authResult.additionalUserInfo]];
- if (self.isNewUserToggleOn) {
- NSString *newUserString = authResult.additionalUserInfo.newUser ?
- @"New user" : @"Existing user";
- [self showMessagePromptWithTitle:@"New or Existing"
- message:newUserString
- showCancelButton:NO
- completion:nil];
- }
- }
- [self showTypicalUIForUserUpdateResultsWithTitle:@"Sign-In Error" error:error];
- }];
- }];
- }];
- }
- - (void)signInTwitterHeadfulLite {
- FIROAuthProvider *provider = self.twitterOAuthProvider;
- [self showSpinner:^{
- [provider getCredentialWithUIDelegate:nil completion:^(FIRAuthCredential *_Nullable credential,
- NSError *_Nullable error) {
- if (error) {
- [self logFailure:@"sign-in with Twitter failed" error:error];
- return;
- }
- [[AppManager auth] signInWithCredential:credential
- completion:^(FIRAuthDataResult *_Nullable
- authResult,
- NSError *_Nullable error) {
- [self hideSpinner:^{
- if (error) {
- [self logFailure:@"sign-in with Twitter (headful-lite) failed" error:error];
- return;
- } else {
- [self logSuccess:@"sign-in with Twitter (headful-lite) succeeded."];
- }
- [self showTypicalUIForUserUpdateResultsWithTitle:@"Sign-In Error" error:error];
- }];
- }];
- }];
- }];
- }
- - (void)signInWithGitHub {
- [self showTextInputPromptWithMessage:@"GitHub Access Token:"
- completionBlock:^(BOOL userPressedOK, NSString *_Nullable accessToken) {
- if (!userPressedOK || !accessToken.length) {
- return;
- }
- FIROAuthCredential *credential =
- [FIROAuthProvider credentialWithProviderID:FIRGitHubAuthProviderID accessToken:accessToken];
- if (credential) {
- [[AppManager auth] signInWithCredential:credential
- completion:^(FIRAuthDataResult *_Nullable result,
- NSError *_Nullable error) {
- if (error) {
- [self logFailure:@"sign-in with provider failed" error:error];
- } else {
- [self logSuccess:@"sign-in with provider succeeded."];
- }
- [self showTypicalUIForUserUpdateResultsWithTitle:@"Sign-In" error:error];
- }];
- }
- }];
- }
- - (void)signInGitHubHeadfulLite {
- FIROAuthProvider *provider = self.gitHubOAuthProvider;
- [self showSpinner:^{
- [provider getCredentialWithUIDelegate:nil completion:^(FIRAuthCredential *_Nullable credential,
- NSError *_Nullable error) {
- if (error) {
- [self logFailure:@"sign-in with GitHub failed" error:error];
- return;
- }
- [[AppManager auth] signInWithCredential:credential
- completion:^(FIRAuthDataResult *_Nullable
- authResult,
- NSError *_Nullable error) {
- [self hideSpinner:^{
- if (error) {
- [self logFailure:@"sign-in with GitHub (headful-lite) failed" error:error];
- return;
- } else {
- [self logSuccess:@"sign-in with GitHub (headful-lite) succeeded."];
- }
- [self showTypicalUIForUserUpdateResultsWithTitle:@"Sign-In Error" error:error];
- }];
- }];
- }];
- }];
- }
- - (void)signInLinkedinHeadfulLite {
- FIROAuthProvider *provider = self.linkedinOAuthProvider;
- [self showSpinner:^{
- [provider getCredentialWithUIDelegate:nil completion:^(FIRAuthCredential *_Nullable credential,
- NSError *_Nullable error) {
- if (error) {
- [self logFailure:@"sign-in with Linkedin failed" error:error];
- return;
- }
- [[AppManager auth] signInWithCredential:credential
- completion:^(FIRAuthDataResult *_Nullable
- authResult,
- NSError *_Nullable error) {
- [self hideSpinner:^{
- if (error) {
- [self logFailure:@"sign-in with Linkedin (headful-lite) failed" error:error];
- return;
- } else {
- [self logSuccess:@"sign-in with Linkedin (headful-lite) succeeded."];
- }
- [self showTypicalUIForUserUpdateResultsWithTitle:@"Sign-In Error" error:error];
- }];
- }];
- }];
- }];
- }
- - (void)signInMicrosoftHeadfulLite {
- FIROAuthProvider *provider = self.microsoftOAuthProvider;
- provider.customParameters = @{
- @"prompt" : @"consent",
- @"login_hint" : @"tu8731@gmail.com",
- };
- provider.scopes = @[ @"user.readwrite,calendars.read" ];
- [self showSpinner:^{
- [provider getCredentialWithUIDelegate:nil completion:^(FIRAuthCredential *_Nullable credential,
- NSError *_Nullable error) {
- if (error) {
- [self logFailure:@"sign-in with Microsoft failed" error:error];
- return;
- }
- [[AppManager auth] signInWithCredential:credential
- completion:^(FIRAuthDataResult *_Nullable
- authResult,
- NSError *_Nullable error) {
- [self hideSpinner:^{
- if (error) {
- [self logFailure:@"sign-in with Microsoft failed" error:error];
- return;
- } else {
- [self logSuccess:@"sign-in with Microsoft (headful-lite) succeeded."];
- }
- [self showTypicalUIForUserUpdateResultsWithTitle:@"Sign-In Error" error:error];
- }];
- }];
- }];
- }];
- }
- - (void)signInYahooHeadfulLite {
- FIROAuthProvider *provider = self.yahooOAuthProvider;
- [self showSpinner:^{
- [provider getCredentialWithUIDelegate:nil completion:^(FIRAuthCredential *_Nullable credential,
- NSError *_Nullable error) {
- if (error) {
- [self logFailure:@"sign-in with Yahoo failed" error:error];
- return;
- }
- [[AppManager auth] signInWithCredential:credential
- completion:^(FIRAuthDataResult *_Nullable
- authResult,
- NSError *_Nullable error) {
- [self hideSpinner:^{
- if (error) {
- [self logFailure:@"sign-in with Yahoo (headful-lite) failed" error:error];
- return;
- } else {
- [self logSuccess:@"sign-in with Yahoo (headful-lite) succeeded."];
- }
- [self showTypicalUIForUserUpdateResultsWithTitle:@"Sign-In Error" error:error];
- }];
- }];
- }];
- }];
- }
- @end
- NS_ASSUME_NONNULL_END
|