2016-05-18 8 views
0

認証後に私のアプリケーションにGmailの受信トレイを統合する必要があります。どのようにAPIを使用してGmailの受信トレイの内容を照会できますか?また、私は他の機能にもアクセスする必要があります。私はGmailにアクセスするための正確な迅速なコードを見つけるのを助けてください。 GoogleドキュメントiOS Quickstart使用SwiftのGMail APIによるGmailの受信ボックスコンテンツの照会方法

答えて

0

はステップ1:GmailのAPIをオンに

ステップ2:ワークスペース

ステップ3の準備:ここではサンプル

を設定していますサンプルコードでViewController.hファイルの内容を次のコードに置き換えます。

#import <UIKit/UIKit.h> 

#import "GTMOAuth2ViewControllerTouch.h" 
#import "GTLGmail.h" 

@interface ViewController : UIViewController 

@property (nonatomic, strong) GTLServiceGmail *service; 
@property (nonatomic, strong) UITextView *output; 

@end 

次のコードでViewController.mの内容を置き換えます

#import "ViewController.h" 

static NSString *const kKeychainItemName = @"Gmail API"; 
static NSString *const kClientID = @"YOUR_CLIENT_ID_HERE"; 

@implementation ViewController 

@synthesize service = _service; 
@synthesize output = _output; 

// When the view loads, create necessary subviews, and initialize the Gmail API service. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // 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.view addSubview:self.output]; 

    // Initialize the Gmail API service & load existing credentials from the keychain if available. 
    self.service = [[GTLServiceGmail alloc] init]; 
    self.service.authorizer = 
    [GTMOAuth2ViewControllerTouch authForGoogleFromKeychainForName:kKeychainItemName 
                 clientID:kClientID 
                clientSecret:nil]; 
} 

// When the view appears, ensure that the Gmail API service is authorized, and perform API calls. 
- (void)viewDidAppear:(BOOL)animated { 
    if (!self.service.authorizer.canAuthorize) { 
    // Not yet authorized, request authorization by pushing the login UI onto the UI stack. 
    [self presentViewController:[self createAuthController] animated:YES completion:nil]; 

    } else { 
    [self fetchLabels]; 
    } 
} 

// Construct a query and get a list of labels from the user's gmail. Display the 
// label name in the UITextView 
- (void)fetchLabels { 
    self.output.text = @"Getting labels..."; 
    GTLQueryGmail *query = [GTLQueryGmail queryForUsersLabelsList]; 
    [self.service executeQuery:query 
        delegate:self 
      didFinishSelector:@selector(displayResultWithTicket:finishedWithObject:error:)]; 
} 

- (void)displayResultWithTicket:(GTLServiceTicket *)ticket 
      finishedWithObject:(GTLGmailListLabelsResponse *)labelsResponse 
          error:(NSError *)error { 
    if (error == nil) { 
    NSMutableString *labelString = [[NSMutableString alloc] init]; 
    if (labelsResponse.labels.count > 0) { 
     [labelString appendString:@"Labels:\n"]; 
     for (GTLGmailLabel *label in labelsResponse.labels) { 
     [labelString appendFormat:@"%@\n", label.name]; 
     } 
    } else { 
     [labelString appendString:@"No labels found."]; 
    } 
    self.output.text = labelString; 
    } else { 
    [self showAlert:@"Error" message:error.localizedDescription]; 
    } 
} 


// Creates the auth controller for authorizing access to Gmail API. 
- (GTMOAuth2ViewControllerTouch *)createAuthController { 
    GTMOAuth2ViewControllerTouch *authController; 
    // If modifying these scopes, delete your previously saved credentials by 
    // resetting the iOS simulator or uninstall the app. 
    NSArray *scopes = [NSArray arrayWithObjects:kGTLAuthScopeGmailReadonly, nil]; 
    authController = [[GTMOAuth2ViewControllerTouch alloc] 
      initWithScope:[scopes componentsJoinedByString:@" "] 
       clientID:kClientID 
      clientSecret:nil 
     keychainItemName:kKeychainItemName 
       delegate:self 
     finishedSelector:@selector(viewController:finishedWithAuth:error:)]; 
    return authController; 
} 

// Handle completion of the authorization process, and update the Gmail API 
// with the new credentials. 
- (void)viewController:(GTMOAuth2ViewControllerTouch *)viewController 
     finishedWithAuth:(GTMOAuth2Authentication *)authResult 
       error:(NSError *)error { 
    if (error != nil) { 
    [self showAlert:@"Authentication Error" message:error.localizedDescription]; 
    self.service.authorizer = nil; 
    } 
    else { 
    self.service.authorizer = authResult; 
    [self dismissViewControllerAnimated:YES completion:nil]; 
    } 
} 

// Helper for showing an alert 
- (void)showAlert:(NSString *)title message:(NSString *)message { 
    UIAlertView *alert; 
    alert = [[UIAlertView alloc] initWithTitle:title 
            message:message 
            delegate:nil 
          cancelButtonTitle:@"OK" 
          otherButtonTitles:nil]; 
    [alert show]; 
} 

@end 

ステップ4:認証情報をキーチェーンに格納されているので、後続:

ノートサンプルを実行します処刑は認可を促すことはありません。

iOSとGoogle API(GMAIL API)の詳細については、https://developers.google.com/gmail/api/v1/reference/をご覧ください。追加する機能を適用できます。

あなたがetc.Canドラフト、送信、送信トレイ、私は

+0

:)このことができます願っていますが、このコードを使って、私はすでにこのcode.Iを試してみましたonly.I Gmailのラベルは受信トレイの内容を取得する必要があります取得しています助けて? –

+0

[メッセージの使用/クエリ](https://developers.google.com/gmail/api/guides/filtering)を試しましたか?検索後、 'Users.messages:list'クラスを使用して[message](https://developers.google.com/gmail/api/v1/reference/users/messages/list#response)を取得します。 –

関連する問題