2013-07-27 194 views
0

我想顯示用戶個人資料照片和他的個人資料字段,如公司名稱,職位,行業和位置。 我打電話給ProfilePicCall來檢索個人資料圖片。顯示LinkedIn個人資料照片和用戶個人資料使用LinkedIn API

- (void)ProfilePicCall 
{ 
    NSURL *url = [NSURL URLWithString:@"http://api.linkedin.com/v1/people/~/picture-url"]; 
    OAMutableURLRequest *request = 
    [[OAMutableURLRequest alloc] initWithURL:url 
            consumer:oAuthLoginView.consumer 
             token:oAuthLoginView.accessToken 
            callback:nil 
          signatureProvider:nil]; 

    NSLog(@"the request is %@",request); 


    [request setValue:@"json" forHTTPHeaderField:@"x-li-format"]; 

    OADataFetcher *fetcher = [[OADataFetcher alloc] init]; 
    [fetcher fetchDataWithRequest:request 
         delegate:self 
       didFinishSelector:@selector(profileApiCallResult:didFinish:) 
        didFailSelector:@selector(profileApiCallResult:didFail:)]; 
} 

然後以顯示在圖像視圖中的照片我用下面的代碼

- (void)profileApiCallResult:(OAServiceTicket *)ticket didFinish:(NSData *)data 
{ 
    NSString *responseBody = [[NSString alloc] initWithData:data 
                encoding:NSUTF8StringEncoding]; 

    NSDictionary *profile = [responseBody objectFromJSONString]; 
    // [responseBody release]; 

    if (profile) 
    { 
     NSLog(@"Profile is %@",profile); 

    NSString *picture_url = [[NSUserDefaults standardUserDefaults]valueForKey:@"linkedid_Profile_url"]; 

     NSURL *imageurl = [NSURL URLWithString:picture_url]; 

     NSData *imagedata = [[NSData alloc]initWithContentsOfURL:imageurl]; 

     UIImage *image = [UIImage imageWithData: imagedata]; 
     [LinkedInPicture setImage:image]; 

    } 
    else 
    { 
     NSDictionary *profile = [responseBody objectFromJSONString]; 
     NSLog(@"last path componemt is %@",profile); 

    } 
    // The next thing we want to do is call the network updates 
    [self networkApiCall]; 
    [[NSUserDefaults standardUserDefaults] setValue:@"Used" forKey:@"linkedin"]; 

} 

但圖像不是在圖像視圖中顯示。請幫我展示圖片,以及如何使用LinkedIn API

謝謝。

回答

5

我找到了解決我的問題,它應該改變LinkedIn的API調用是:

- (void)profileApiCall 
{ 

// NSURL *url = [NSURL URLWithString:@"http://api.linkedin.com/v1/people/~"]; 
    NSURL *url = [NSURL URLWithString:@"http://api.linkedin.com/v1/people/~:(id,first-name,last-name,industry,picture-url,location:(name),positions:(company:(name),title),specialties,date-of-birth,interests,languages)"]; 

OAMutableURLRequest *request = 
[[OAMutableURLRequest alloc] initWithURL:url 
           consumer:oAuthLoginView.consumer 
            token:oAuthLoginView.accessToken 
           callback:nil 
         signatureProvider:nil]; 

NSLog(@"the request is %@",request); 


[request setValue:@"json" forHTTPHeaderField:@"x-li-format"]; 

OADataFetcher *fetcher = [[OADataFetcher alloc] init]; 
[fetcher fetchDataWithRequest:request 
        delegate:self 
      didFinishSelector:@selector(profileApiCallResult:didFinish:) 
       didFailSelector:@selector(profileApiCallResult:didFail:)]; 


} 

感謝。

+0

我沒有得到用戶個人資料網址我使用相同的code.any原因是什麼? –

+0

@ Darshan: - 我使用相同的代碼,它的工作完美,再試一次 – ravinder521986

1

我不喜歡上面的方法,

首先,我使用這個庫與Auth2.0幫助記錄過程在LinkedIn https://github.com/jeyben/IOSLinkedInAPI

如下使用它或閱讀文檔和更改代碼由你自己。

解決的辦法是申請https://api.linkedin.com/v1/people/~:(picture-url)?oauth2_access_token= &格式= JSON

LIALinkedInApplication *application = [LIALinkedInApplication applicationWithRedirectURL:@"http://www.ancientprogramming.com/liaexample" 
                        clientId:@"clientId" 
                       clientSecret:@"clientSecret" 
                        state:@"DCEEFWF45453sdffef424" 
                      grantedAccess:@[@"r_fullprofile", @"r_network"]]; 



LIALinkedInHttpClient *client = [LIALinkedInHttpClient clientForApplication:application presentingViewController:nil]; 

[client getAuthorizationCode:^(NSString *code) { 
    [client getAccessToken:code success:^(NSDictionary *accessTokenData) { 
     NSString *accessToken = [accessTokenData objectForKey:@"access_token"]; 
     //here you already have you access token 
     //SOLUTION == https://api.linkedin.com/v1/people/~:(picture-url)?oauth2_access_token=<ACCESS_TOKEN>&format=json 
     //make a http request and get the result with an image url 

    } cancel:^{ 
    NSLog(@"Authorization was cancelled by user"); 
    } failure:^(NSError *error) { 
    NSLog(@"Authorization failed %@", error); 
    }]; 
} 

工作正常,我

+1

謝謝,你只是在評論中提出解決方案,這就是爲什麼人們無法找到它。 https://api.linkedin.com/v1/people/~:(picture-url)?oauth2_access_token=&format=json –

相關問題