2012-06-11 46 views
7

Tôi đang cố tải lên video bằng mã mẫu của api youtube. Khi tôi nhấn nút tải lên, thanh tiến trình kết thúc quá trình của nó, nhưng một khi nó đạt đến điểm kết thúc tôi sẽ gặp lỗi. Lỗi mô tả như sau:Xác thực API Youtube - Iphone

YouTubeTest [2149: f803]. Lỗi - Lỗi miền = com.google.GDataServiceDomain Mã = 400 "Các hoạt động có thể không được hoàn thành (com.google.GDataServiceDomain lỗi 400 .)" UserInfo = 0x69d5bd0 {}

Đây là mã cho nút tải lên ép

- (IBAction)uploadPressed:(id)sender { 
    [self.view resignFirstResponder]; 
    NSString *devKey = [mDeveloperKeyField text]; 

    GDataServiceGoogleYouTube *service = [self youTubeService]; 
    [service setYouTubeDeveloperKey:devKey]; 

    NSString *username = [mUsernameField text]; 
    NSString *clientID = [mClientIDField text]; 

    NSURL *url = [GDataServiceGoogleYouTube youTubeUploadURLForUserID:username 
                  clientID:clientID]; 

    // load the file data 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"YouTubeTest" ofType:@"m4v"]; 
    NSData *data = [NSData dataWithContentsOfFile:path]; 
    NSString *filename = [path lastPathComponent]; 

    // gather all the metadata needed for the mediaGroup 
    NSString *titleStr = [mTitleField text]; 
    GDataMediaTitle *title = [GDataMediaTitle textConstructWithString:titleStr]; 

    NSString *categoryStr = [mCategoryField text]; 
    GDataMediaCategory *category = [GDataMediaCategory mediaCategoryWithString:categoryStr]; 
    [category setScheme:kGDataSchemeYouTubeCategory]; 

    NSString *descStr = [mDescriptionField text]; 
    GDataMediaDescription *desc = [GDataMediaDescription textConstructWithString:descStr]; 

    NSString *keywordsStr = [mKeywordsField text]; 
    GDataMediaKeywords *keywords = [GDataMediaKeywords keywordsWithString:keywordsStr]; 

    BOOL isPrivate = mIsPrivate; 

    GDataYouTubeMediaGroup *mediaGroup = [GDataYouTubeMediaGroup mediaGroup]; 
    [mediaGroup setMediaTitle:title]; 
    [mediaGroup setMediaDescription:desc]; 
    [mediaGroup addMediaCategory:category]; 
    [mediaGroup setMediaKeywords:keywords]; 
    [mediaGroup setIsPrivate:isPrivate]; 

    NSString *mimeType = [GDataUtilities MIMETypeForFileAtPath:path 
               defaultMIMEType:@"video/mp4"]; 

    // create the upload entry with the mediaGroup and the file data 
    GDataEntryYouTubeUpload *entry; 
    entry = [GDataEntryYouTubeUpload uploadEntryWithMediaGroup:mediaGroup 
                  data:data 
                 MIMEType:mimeType 
                  slug:filename]; 

    SEL progressSel = @selector(ticket:hasDeliveredByteCount:ofTotalByteCount:); 
    [service setServiceUploadProgressSelector:progressSel]; 

    GDataServiceTicket *ticket; 
    ticket = [service fetchEntryByInsertingEntry:entry 
             forFeedURL:url 
             delegate:self 
           didFinishSelector:@selector(uploadTicket:finishedWithEntry:error:)]; 

    [self setUploadTicket:ticket]; 

} 

tôi đã thiết lập khóa nhà phát triển và khách hàng trọng điểm một cách chính xác từ API Bảng điều khiển.

Tôi đang chạy tính năng này trên trình mô phỏng. Có phải chúng tôi không thể tải lên video từ trình mô phỏng không?

Vui lòng hướng dẫn tôi tôi đang gặp sự cố ở đâu?

+0

Lỗi 400 thường có nghĩa là yêu cầu không hợp lệ. Tôi sẽ kiểm tra tất cả các mã của bạn, xác thực đăng nhập và nếu có thể, thử nghiệm trên thiết bị để loại trừ bất kỳ vấn đề có thể xảy ra mà trình mô phỏng có thể gây ra. – Luke

+0

@Luke Tôi đã kiểm tra trên thiết bị. Nó không làm việc ở đó hoặc là .. Cho cùng một lỗi: ( – innodeasapps

+0

Bạn có bất kỳ mã mẫu hoặc liên kết sau đó xin vui lòng chia sẻ.Tôi có mẫu cho MAC OS X nhưng bot cho iOS. – Imran

Trả lời

3

Lỗi Giải Quyết ... Khi sử dụng một tài khoản Google để tải video lên YouTube, một số chức năng của GData Objective-C yêu cầu tài khoản Gmail như tham số và một số yêu cầu YouTube liên kết tài khoản như tham số.

Khi bạn gọi '- (void) setUserCredentialsWithUsername: (NSString *) mật khẩu tên người dùng: (NSString *) mật khẩu;' trong GDataServiceBase, tên người dùng phải là tài khoản Gmail, ví dụ: 'x ... @ gmail.com' và mật khẩu phải là mật khẩu của tài khoản Gmail .

Nhưng khi bạn gọi '+ (NSURL *) youTubeUploadURLForUserID: (NSString *) userID clientID: (NSString *) clientID;' trong GDataServiceGoogleYouTube, thông số userID phải là tài khoản được liên kết YouTube và mật khẩu của tài khoản Gmail .

Tôi đã sử dụng [email protected] để đăng nhập tại nơi tôi đang sử dụng email_id để đăng nhập. Thật là một lỗi ngớ ngẩn! .. Nhưng đã cho tôi 2 ngày đầy đủ để giải quyết .. Duhhh .. !!