مراحل توضیحدادهشده در این صفحه نحوه ایجاد سریع یک برنامه ساده iOS را که درخواستهایی به YouTube Data API ارسال میکند، توضیح میدهد. این نمونه نشان میدهد که چگونه میتوان دادههای مربوط به کانال YouTube GoogleDevelopers را بازیابی کرد. این کد همچنین شامل نظراتی است که نحوه اصلاح پرسمان را برای بازیابی دادههای مربوط به کانال YouTube کاربر فعلی توضیح میدهد.
پیشنیازها
برای اجرای این شروع سریع، به موارد زیر نیاز دارید:
مرحله ۱: روشن کردن YouTube Data API
-
از این دستیار برای ایجاد یا انتخاب پروژه در «کنسول Google Developers» و فعال کردن خودکار API استفاده کنید. روی ادامه دادن و سپس رفتن به اطلاعات اعتباری کلیک کنید.
-
در صفحه ایجاد اطلاعات کاربری، روی دکمه لغو کلیک کنید.
-
در بالای صفحه، برگه صفحه کسب رضایت OAuth را انتخاب کنید. نشانی ایمیل را انتخاب کنید، اگر نام محصول ازقبل تنظیم نشده است، آن را وارد کنید و روی دکمه ذخیره کلیک کنید.
-
برگه اعتبارنامهها را انتخاب کنید، روی دکمه ایجاد اعتبارنامهها کلیک کنید و شناسه کارخواه OAuth را انتخاب کنید.
- نوع برنامه iOS را انتخاب کنید، نام «YouTube Data API
Quickstart» و شناسه دسته نرمافزاری
com.example.QuickstartAppرا وارد کنید، و روی دکمه ایجاد کلیک کنید.
مرحله ۲: آماده کردن فضای کاری
- Xcode را باز کنید و پروژه جدیدی ایجاد کنید:
- روی File (فایل) > New (جدید) > Project (پروژه) کلیک کنید، الگوی iOS > Application (برنامه) > Single View Application (برنامه تکنمایی) را انتخاب کنید، و روی Next (بعدی) کلیک کنید.
- نام محصول را روی «QuickstartApp»، شناسه سازمان را روی «com.example»، و زبان را روی
Objective-Cتنظیم کنید.
در زیر شناسه سازمان، باید یک
شناسه بسته تولیدشده را ببینید که با شناسه بسته iOS
(
com.example.QuickstartApp) که در مرحله ۱.ب وارد کردهاید مطابقت دارد. - روی بعدی کلیک کنید.
- فهرست راهنمای مقصد را برای پروژه انتخاب کنید و روی ایجاد کلیک کنید.
- با کلیک کردن روی فایل > بستن پروژه، پروژه را ببندید.
- پنجره «ترمینال» را باز کنید و به دایرکتوری حاوی فایل
QuickstartApp.xcodeprojکه بهتازگی ایجاد کردهاید بروید. فرمانهای زیر را اجرا کنید تا Podfile ایجاد شود، کتابخانه نصب شود، و پروژه XCode حاصل باز شود:
cat << EOF > Podfile && platform :ios, '8.0' target 'QuickstartApp' do pod 'GoogleAPIClientForREST/YouTube', '~> 1.2.1' pod 'Google/SignIn', '~> 3.0.3' end EOF pod install && open QuickstartApp.xcworkspaceدر XCode Project Navigator، گره پروژه «QuickstartApp» را انتخاب کنید. سپس روی گزینه منو File > Add files to "QuickstartApp" (فایل > افزودن فایلها به «QuickstartApp») کلیک کنید.

فایل
GoogleService-Info.plistرا که قبلاً بارگیری کردهاید پیدا و انتخاب کنید. روی دکمه گزینهها کلیک کنید.
در پنجره گزینهها، انتخابهای زیر را انجام دهید و سپس روی دکمه افزودن کلیک کنید:
- چارگوش انتخاب کپی کردن موارد درصورت نیاز را علامت بزنید.
- همه هدفهای فهرستشده در بخش افزودن به هدفها را علامت بزنید.

درحالیکه گره پروژه همچنان انتخاب شده است، «QuickstartApp» را در بخش TARGETS انتخاب کنید، همانطور که در دو تصویر زیر نشان داده شده است:
روی ناحیه نشاندادهشده در این نماگرفت کلیک کنید:

سپس هدف مناسب را انتخاب کنید:

برگه اطلاعات را انتخاب کنید و بخش انواع نشانی وب را ازهم باز کنید.
روی دکمه + کلیک کنید و طرحواره نشانی وب را برای شناسه مشتری معکوسشده خود اضافه کنید. برای پیدا کردن این مقدار، فایل پیکربندی
GoogleService-Info.plistرا که در مرحله ۲.و انتخاب کردهاید باز کنید. کلید REVERSED_CLIENT_ID را پیدا کنید. مقدار آن کلید را کپی کنید و آن را در چارگوش طرحهای نشانی وب در صفحه پیکربندی جایگذاری کنید. بقیه فیلدها را خالی بگذارید.پروژه را بازسازی کنید:
- روی محصول > پاک کردن پوشه ساخت (ضمن نگه داشتن کلید گزینه کلیک کنید).
- روی محصول > ساخت کلیک کنید.
مرحله ۳: راهاندازی نمونه
محتوای فایلهای زیر را با کد ارائهشده جایگزین کنید:#import <UIKit/UIKit.h> @import GoogleSignIn; @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @end
#import "AppDelegate.h" @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Initialize Google sign-in. [GIDSignIn sharedInstance].clientID = @"<YOUR_CLIENT_ID>"; return YES; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [[GIDSignIn sharedInstance] handleURL:url sourceApplication:sourceApplication annotation:annotation]; } @end
#import <UIKit/UIKit.h> @import GoogleSignIn; #import <GTLRYouTube.h> @interface ViewController : UIViewController <GIDSignInDelegate, GIDSignInUIDelegate> @property (nonatomic, strong) IBOutlet GIDSignInButton *signInButton; @property (nonatomic, strong) UITextView *output; @property (nonatomic, strong) GTLRYouTubeService *service; @end
#import "ViewController.h" @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Configure Google Sign-in. GIDSignIn* signIn = [GIDSignIn sharedInstance]; signIn.delegate = self; signIn.uiDelegate = self; signIn.scopes = [NSArray arrayWithObjects:kGTLRAuthScopeYouTubeReadonly, nil]; [signIn signInSilently]; // Add the sign-in button. self.signInButton = [[GIDSignInButton alloc] init]; [self.view addSubview:self.signInButton]; // Create a UITextView to display output. self.output = [[UITextView alloc] initWithFrame:self.view.bounds]; self.output.editable = false; self.output.contentInset = UIEdgeInsetsMake(20.0, 0.0, 20.0, 0.0); self.output.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; self.output.hidden = true; [self.view addSubview:self.output]; // Initialize the service object. self.service = [[GTLRYouTubeService alloc] init]; } - (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user withError:(NSError *)error { if (error != nil) { [self showAlert:@"Authentication Error" message:error.localizedDescription]; self.service.authorizer = nil; } else { self.signInButton.hidden = true; self.output.hidden = false; self.service.authorizer = user.authentication.fetcherAuthorizer; [self fetchChannelResource]; } } // Construct a query and retrieve the channel resource for the GoogleDevelopers // YouTube channel. Display the channel title, description, and view count. - (void)fetchChannelResource { GTLRYouTubeQuery_ChannelsList *query = [GTLRYouTubeQuery_ChannelsList queryWithPart:@"snippet,statistics"]; query.identifier = @"UC_x5XG1OV2P6uZZ5FSM9Ttw"; // To retrieve data for the current user's channel, comment out the previous // line (query.identifier ...) and uncomment the next line (query.mine ...). // query.mine = true; [self.service executeQuery:query delegate:self didFinishSelector:@selector(displayResultWithTicket:finishedWithObject:error:)]; } // Process the response and display output - (void)displayResultWithTicket:(GTLRServiceTicket *)ticket finishedWithObject:(GTLRYouTube_ChannelListResponse *)channels error:(NSError *)error { if (error == nil) { NSMutableString *output = [[NSMutableString alloc] init]; if (channels.items.count > 0) { [output appendString:@"Channel information:\n"]; for (GTLRYouTube_Channel *channel in channels) { NSString *title = channel.snippet.title; NSString *description = channel.snippet.description; NSNumber *viewCount = channel.statistics.viewCount; [output appendFormat:@"Title: %@\nDescription: %@\nViewCount: %@\n", title, description, viewCount]; } } else { [output appendString:@"Channel not found."]; } self.output.text = output; } else { [self showAlert:@"Error" message:error.localizedDescription]; } } // Helper for showing an alert - (void)showAlert:(NSString *)title message:(NSString *)message { UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { [alert dismissViewControllerAnimated:YES completion:nil]; }]; [alert addAction:ok]; [self presentViewController:alert animated:YES completion:nil]; } @end
مرحله ۴: اجرای نمونه
با کلیک کردن روی محصول > طرح > QuickstartApp به طرح QuickstartApp بروید و نمونه را بااستفاده از شبیهساز دستگاه یا دستگاه پیکربندیشده اجرا کنید (Cmd+R). اولین باری که نمونه را اجرا میکنید، از شما خواسته میشود به سیستم حساب Google خود وارد شوید و دسترسی را مجاز کنید.
یادداشتها
- اطلاعات مجوز در «دسته کلید» شما ذخیره میشود، بنابراین اجراهای بعدی از شما درخواست مجوز نخواهد کرد.