আপনার iOS বা macOS অ্যাপে Google সাইন-ইন সংহত করা হচ্ছে

এই পৃষ্ঠায় দেখানো হয়েছে কীভাবে একটি iOS বা macOS অ্যাপে গুগল সাইন-ইন যুক্ত করতে হয়। আপনার অ্যাপের জীবনচক্র বা UI মডেল অনুযায়ী এই নির্দেশাবলী পরিবর্তন করার প্রয়োজন হতে পারে।

শুরু করার আগে

নির্ভরতাগুলো ডাউনলোড করুন, আপনার Xcode প্রজেক্ট কনফিগার করুন এবং আপনার ক্লায়েন্ট আইডি সেট করুন

Try our iOS and macOS sample app to see how Sign-In works .

১. প্রমাণীকরণ পুনঃনির্দেশ URL পরিচালনা করুন

iOS: UIApplicationDelegate

আপনার AppDelegate-এর application:openURL:options মেথডে, GIDSignIn এর handleURL: মেথডটি কল করুন:

সুইফট

func application(
  _ app: UIApplication,
  open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]
) -> Bool {
  var handled: Bool

  handled = GIDSignIn.sharedInstance.handle(url)
  if handled {
    return true
  }

  // Handle other custom URL types.

  // If not handled by this app, return false.
  return false
}

উদ্দেশ্য-সি

- (BOOL)application:(UIApplication *)app
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
  BOOL handled;

  handled = [GIDSignIn.sharedInstance handleURL:url];
  if (handled) {
    return YES;
  }

  // Handle other custom URL types.

  // If not handled by this app, return NO.
  return NO;
}

ম্যাকওএস: এনএসঅ্যাপ্লিকেশনডেলিগেট

  1. আপনার অ্যাপের AppDelegate-এর applicationDidFinishLaunchingkAEGetURL ইভেন্টগুলির জন্য একটি হ্যান্ডলার রেজিস্টার করুন:

    সুইফট

    func applicationDidFinishLaunching(_ notification: Notification) {
      // Register for GetURL events.
      let appleEventManager = NSAppleEventManager.shared()
      appleEventManager.setEventHandler(
        self,
        andSelector: "handleGetURLEvent:replyEvent:",
        forEventClass: AEEventClass(kInternetEventClass),
        andEventID: AEEventID(kAEGetURL)
      )
    }
    

    উদ্দেশ্য-সি

    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
      // Register for GetURL events.
      NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager];
      [appleEventManager setEventHandler:self
                         andSelector:@selector(handleGetURLEvent:withReplyEvent:)
                         forEventClass:kInternetEventClass
                         andEventID:kAEGetURL];
    }
    
  2. এই ইভেন্টগুলির জন্য হ্যান্ডলারটি সংজ্ঞায়িত করুন যা GIDSignIn এর handleURL কল করে:

    সুইফট

    func handleGetURLEvent(event: NSAppleEventDescriptor?, replyEvent: NSAppleEventDescriptor?) {
        if let urlString =
          event?.paramDescriptor(forKeyword: AEKeyword(keyDirectObject))?.stringValue{
            let url = NSURL(string: urlString)
            GIDSignIn.sharedInstance.handle(url)
        }
    }
    

    উদ্দেশ্য-সি

    - (void)handleGetURLEvent:(NSAppleEventDescriptor *)event
               withReplyEvent:(NSAppleEventDescriptor *)replyEvent {
          NSString *URLString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
          NSURL *URL = [NSURL URLWithString:URLString];
          [GIDSignIn.sharedInstance handleURL:url];
    }
    

SwiftUI

আপনার অ্যাপের উইন্ডো বা সিনে, URL গ্রহণ করতে এবং GIDSignIn এর handleURL কল করার জন্য একটি হ্যান্ডলার রেজিস্টার করুন।

সুইফট

@main
struct MyApp: App {

  var body: some Scene {
    WindowGroup {
      ContentView()
        // ...
        .onOpenURL { url in
          GIDSignIn.sharedInstance.handle(url)
        }
    }
  }
}

২. ব্যবহারকারীর সাইন-ইন অবস্থা পুনরুদ্ধার করার চেষ্টা।

When your app starts up, call restorePreviousSignInWithCallback to try and restore the sign-in state of users who already signed in using Google. Doing so ensures users don't have to sign in every time they open your app (unless they've signed out).

iOS apps often do this in UIApplicationDelegate 's application:didFinishLaunchingWithOptions: method and NSApplicationDelegate 's applicationDidFinishLaunching: for macOS apps. Use the result to determine which view to present to the user. For example:

সুইফট

func application(
  _ application: UIApplication,
  didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
  GIDSignIn.sharedInstance.restorePreviousSignIn { user, error in
    if error != nil || user == nil {
      // Show the app's signed-out state.
    } else {
      // Show the app's signed-in state.
    }
  }
  return true
}

উদ্দেশ্য-সি

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [GIDSignIn.sharedInstance restorePreviousSignInWithCompletion:^(GIDGoogleUser * _Nullable user,
                                                                  NSError * _Nullable error) {
    if (error) {
      // Show the app's signed-out state.
    } else {
      // Show the app's signed-in state.
    }
  }];
  return YES;
}

SwiftUI

আপনি যদি SwiftUI ব্যবহার করেন, তাহলে আপনার প্রাথমিক ভিউয়ের জন্য onAppearrestorePreviousSignIn কলটি যোগ করুন:

সুইফট

@main
struct MyApp: App {
  var body: some Scene {
    WindowGroup {
      ContentView()
        // ...
        .onAppear {
          GIDSignIn.sharedInstance.restorePreviousSignIn { user, error in
            // Check if `user` exists; otherwise, do something with `error`
          }
        }
    }
  }
}

৩. একটি গুগল সাইন-ইন বাটন যোগ করুন

আপনার সাইন-ইন ভিউতে একটি "গুগল দিয়ে সাইন ইন করুন" বাটন যোগ করুন। SwiftUI এবং UIKit-এর জন্য এমন কম্পোনেন্ট রয়েছে যা স্বয়ংক্রিয়ভাবে গুগল ব্র্যান্ডিং সহ একটি বাটন তৈরি করে এবং এগুলি ব্যবহারের জন্য সুপারিশ করা হয়।

SwiftUI ব্যবহার করে

  1. আপনার প্রজেক্টে SwiftUI "Sign in with Google" বাটনটির ডিপেন্ডেন্সি যোগ করা হয়েছে কিনা, তা নিশ্চিত করুন।

  2. যে ফাইলে আপনি SwiftUI বাটনটি যোগ করতে চান, সেই ফাইলের একদম উপরে প্রয়োজনীয় ইম্পোর্টটি যোগ করুন:

    import GoogleSignInSwift
    
  3. আপনার ভিউতে একটি "গুগল দিয়ে সাইন ইন করুন" বাটন যোগ করুন এবং বাটনটি চাপলে যে অ্যাকশনটি কল করা হবে তা নির্দিষ্ট করুন:

    GoogleSignInButton(action: handleSignInButton)
    
  4. আপনার অ্যাকশনে GIDSignIn এর signIn(presentingViewController:completion:) মেথডটি কল করে বাটনটি চাপলে সাইন ইন প্রক্রিয়াটি চালু করুন:

    func handleSignInButton() {
      GIDSignIn.sharedInstance.signIn(
        withPresenting: rootViewController) { signInResult, error in
          guard let result = signInResult else {
            // Inspect error
            return
          }
          // If sign in succeeded, display the app's main content View.
        }
      )
    }
    

This uses the default view model that provides standard styling information for the button. To control the button's appearance, you need to create a custom GoogleSignInButtonViewModel and set it as the viewModel in the button's initializer using GoogleSignInButton(viewModel: yourViewModel, action: yourAction) . See the GoogleSignInButtonViewModel source code for more information.

UIKit ব্যবহার করে

  1. Add a "Sign in with Google" button to your sign-in View. You can use the GIDSignInButton class to automatically generate a button with Google branding (recommended) or create your own button with custom styling.

    To add a GIDSignInButton to a storyboard or XIB file, add a View and set its custom class to GIDSignInButton . Note that when you add a GIDSignInButton View to your storyboard, the sign-in button doesn't render in the interface builder. Run the app to see the sign-in button.

    আপনি একটি GIDSignInButton এর colorScheme এবং style প্রোপার্টি সেট করার মাধ্যমে এর চেহারা কাস্টমাইজ করতে পারেন:

    GIDSignInButton স্টাইল প্রোপার্টিজ
    colorScheme kGIDSignInButtonColorSchemeLight
    kGIDSignInButtonColorSchemeDark
    style kGIDSignInButtonStyleStandard
    kGIDSignInButtonStyleWide
    kGIDSignInButtonStyleIconOnly
  2. আপনার ViewController-এর এমন একটি মেথডের সাথে বাটনটিকে সংযুক্ত করুন যা signIn: কল করে। উদাহরণস্বরূপ, একটি IBAction ব্যবহার করুন:

    সুইফট

    @IBAction func signIn(sender: Any) {
      GIDSignIn.sharedInstance.signIn(withPresenting: self) { signInResult, error in
        guard error == nil else { return }
    
        // If sign in succeeded, display the app's main content View.
      }
    }
    

    উদ্দেশ্য-সি

    - (IBAction)signIn:(id)sender {
      [GIDSignIn.sharedInstance
          signInWithPresentingViewController:self
                                  completion:^(GIDSignInResult * _Nullable signInResult,
                                               NSError * _Nullable error) {
        if (error) {
          return;
        }
    
        // If sign in succeeded, display the app's main content View.
      }];
    }
    

৪. একটি সাইন-আউট বাটন যোগ করুন

  1. আপনার অ্যাপে একটি সাইন-আউট বাটন যোগ করুন, যা শুধুমাত্র সাইন-ইন করা ব্যবহারকারীরাই দেখতে পাবেন।

  2. আপনার ViewController-এর এমন একটি মেথডের সাথে বাটনটিকে সংযুক্ত করুন যা signOut: কল করে। উদাহরণস্বরূপ, একটি IBAction ব্যবহার করুন:

    সুইফট

    @IBAction func signOut(sender: Any) {
      GIDSignIn.sharedInstance.signOut()
    }
    

    উদ্দেশ্য-সি

    - (IBAction)signOut:(id)sender {
      [GIDSignIn.sharedInstance signOut];
    }
    

পরবর্তী পদক্ষেপ

এখন যেহেতু ব্যবহারকারীরা তাদের গুগল অ্যাকাউন্ট ব্যবহার করে আপনার অ্যাপে সাইন ইন করতে পারেন, জেনে নিন কীভাবে: