2013-03-27 5 views
0

새로운 api statuses/update_with_media를 사용하여 트위터에서 이미지를 공유하려고합니다. 그런 다음 dev.twitter.com/discussion 페이지에서 코드를 검색하고 얻었습니다. 여기에 코드가 있습니다.http://upload.twitter.com/1/statuses/update_with_media 아래에서 ios 5.0을 사용하여 트위터에 이미지를 올리는 방법

여기에 코드

- (NSString *) _uploadImage:(UIImage *)image requestType:(MGTwitterRequestType)requestType responseType:(MGTwitterResponseType)responseType 
{ 

    NSString *boundary = @"----------------------------991990ee82f7"; 

    NSURL *finalURL = [NSURL URLWithString:@"http://upload.twitter.com/1/statuses/update_with_media.json"]; 
    if (!finalURL) 
    { 
     return nil; 
    } 

    NSLog(@"-> Open Connection: %@", finalURL); 


    OAMutableURLRequest *theRequest = [[OAMutableURLRequest alloc] initWithURL:finalURL 
                     consumer:self.consumer 
                     token:_accessToken 
                     realm: nil 
                  signatureProvider:nil]; 

    [theRequest setHTTPMethod:@"POST"]; 
    [theRequest setHTTPShouldHandleCookies:NO]; 

    // Set headers for client information, for tracking purposes at Twitter. 
    [theRequest setValue:_clientName forHTTPHeaderField:@"X-Twitter-Client"]; 
    [theRequest setValue:_clientVersion forHTTPHeaderField:@"X-Twitter-Client-Version"]; 
    [theRequest setValue:_clientURL  forHTTPHeaderField:@"X-Twitter-Client-URL"]; 


    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; 
    [theRequest setValue:contentType forHTTPHeaderField:@"content-type"]; 

    NSMutableData *body = [NSMutableData dataWithLength:0]; 
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

    [body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"media_data[]\"; filename=\"1.jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithString:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithString:[UIImageJPEGRepresentation(image, 1.0) base64EncodingWithLineLength:0]] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"status\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithString:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithString:@"Honeymoon uploads image\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

    // -------------------------------------------------------------------------------- 
    // modificaiton from the base clase 
    // our version "prepares" the oauth url request 
    // -------------------------------------------------------------------------------- 
    [theRequest prepare]; 

    [theRequest setHTTPBody:body]; 

    // Create a connection using this request, with the default timeout and caching policy, 
    // and appropriate Twitter request and response types for parsing and error reporting. 
    MGTwitterHTTPURLConnection *connection; 
    connection = [[MGTwitterHTTPURLConnection alloc] initWithRequest:theRequest 
                  delegate:self 
                 requestType:requestType 
                 responseType:responseType]; 

    if (!connection) 
    { 
     return nil; 
    } 
    else 
    { 
     [_connections setObject:connection forKey:[connection identifier]]; 
     //[connection release]; 
    } 

    return [connection identifier]; 
} 
다음

난 내 응용 프로그램 전개 대상 양식 3.0 시작하기 때문에 트위터에 게시물을 텍스트 또는 이미지의 OAuth 방식을 사용하고 있기 때문에 내가 SA_OAuthtwitterengine에서이 코드를 구현 입력 (IOS를, 아이팟) , 그래서 나는이 방법을 시도한다.

이제 내 문제는 메시지와 함께 이미지를 트위터에 보내는 코드를 만드는 방법입니다.

은 내가 401 오류를 의미 연결 오류가 발생했습니다

[_engine sendupdate:@"http://www.prepare-community.com/ShareFiles/index-fr.jpg"]; 

아래의 형식을 사용하여 트위터에 이미지를 보내려고.

위의 코드를 사용하여 트위터에 이미지를 보내는 방법을 보내 주시겠습니까?

+0

http://stackoverflow.com/questions/29555971/ios-unable-to-upload-media-with-twitter-fabric-new-sdk/36509939 .... 당신을 위해 작동합니다 희망 # 36509939 – jose920405

답변

0

다음은 새로운 twitter api update_with_media를 사용하여 이미지를 업로드하는 솔루션입니다. 이 API를 사용하면 이미지를 트위터 계정에 직접 업로드 할 수 있습니다. 위의 _uploadimage 코드는 SA_OAuthtwitter 엔진 .m 파일에 첫 번째로 넣고 .h 파일로 데칼합니다.

그리고 1.png 대신 fileenamed = 1.jpg을 배치 한 곳을 작게 수정하십시오.

이제 MGTwitterengine.m 클래스에 아래 코드를 넣으십시오. 여기 코드는

- (NSString *)_uploadImage:(UIImage *)image withStatus:(NSString *)status 
{ 
    return [self _uploadImage:image withStatus:status requestType:MGTwitterImageRequest responseType:MGTwitterStatuses]; 
} 

입니다. 그런 다음이 코드를 사용하여 이미지를 트위터에 업로드합니다. 즉,

[_engine _uploadImage : yourpicture withStatus : yourstatus];