您好我希望通过我的应用在LinkedIn中分享文字。我的代码在这里......
点击btn linkedIn共享时此方法..
- (void)linkedBtnEvent
{
if(oAuthLoginView != nil) {
oAuthLoginView.delegate = nil;
oAuthLoginView = nil;
}
oAuthLoginView = [[OAuthLoginView alloc] initWithNibName:nil bundle:nil];
oAuthLoginView.delegate=self;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(loginViewDidFinish:)
name:@"loginViewDidFinish"
object:self.oAuthLoginView];
[self presentViewController:self.oAuthLoginView animated:YES completion:nil];
}
这是登录后处理共享的方法..
-(void) loginViewDidFinish:(NSNotification*)notification
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
[self profileApiCall];
}
- (void)profileApiCall
{
NSURL *url = [NSURL URLWithString:@"https://api.linkedin.com/v1/people/~"];
OAMutableURLRequest *request =
[[OAMutableURLRequest alloc] initWithURL:url
consumer:oAuthLoginView.consumer
token:oAuthLoginView.accessToken
callback:nil
signatureProvider:nil];
[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];
if ( profile )
{
NSLog(@"%@", [[NSString alloc] initWithFormat:@"%@ %@",
[profile objectForKey:@"firstName"], [profile objectForKey:@"lastName"]]);
}
// The next thing we want to do is call the network updates
[self networkApiCall];
}
- (void)profileApiCallResult:(OAServiceTicket *)ticket didFail:(NSData *)error
{
NSLog(@"%@",[error description]);
}
- (void)networkApiCall
{
NSURL *url = [NSURL URLWithString:@"https://api.linkedin.com/v1/people/~/network/updates?scope=self&count=1&type=STAT"];
OAMutableURLRequest *request =
[[OAMutableURLRequest alloc] initWithURL:url
consumer:oAuthLoginView.consumer
token:oAuthLoginView.accessToken
callback:nil
signatureProvider:nil];
[request setValue:@"json" forHTTPHeaderField:@"x-li-format"];
OADataFetcher *fetcher = [[OADataFetcher alloc] init];
[fetcher fetchDataWithRequest:request
delegate:self
didFinishSelector:@selector(networkApiCallResult:didFinish:)
didFailSelector:@selector(networkApiCallResult:didFail:)];
}
- (void)networkApiCallResult:(OAServiceTicket *)ticket didFinish:(NSData *)data
{
if (isSharedLinked)
{
NSLog(@"Shared Successfully");
linkedBtn.enabled = NO;
}
else
{
isSharedLinked = YES;
[self performSelector:@selector(postTextLinkedIn) withObject:nil afterDelay:1];
}
}
- (void)networkApiCallResult:(OAServiceTicket *)ticket didFail:(NSData *)error
{
NSLog(@"%@",[error description]);
}
- (void)postTextLinkedIn
{
NSURL *url = [NSURL URLWithString:@"https://api.linkedin.com/v1/people/~/shares"];
OAMutableURLRequest *request =
[[OAMutableURLRequest alloc] initWithURL:url
consumer:oAuthLoginView.consumer
token:oAuthLoginView.accessToken
callback:nil
signatureProvider:nil];
NSDictionary *update = [[NSDictionary alloc] initWithObjectsAndKeys:
[[NSDictionary alloc]
initWithObjectsAndKeys:
@"anyone",@"code",nil], @"visibility",
@"Wow its working... Share the text in Linked In", @"comment", nil];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSString *updateString = [update JSONString];
[request setHTTPBodyWithString:updateString];
[request setHTTPMethod:@"POST"];
OADataFetcher *fetcher = [[OADataFetcher alloc] init];
[fetcher fetchDataWithRequest:request
delegate:self
didFinishSelector:@selector(postUpdateApiCallResult:didFinish:)
didFailSelector:@selector(postUpdateApiCallResult:didFail:)];
}
- (void)postUpdateApiCallResult:(OAServiceTicket *)ticket didFinish:(NSData *)data
{
// The next thing we want to do is call the network updates
[self networkApiCall];
}
- (void)postUpdateApiCallResult:(OAServiceTicket *)ticket didFail:(NSData *)error
{
NSLog(@"%@",[error description]);
}
它显示没有错误它总是如何在LinkedIn成功共享但没有文本分享... 请帮我解决这个问题...我无法弄清楚我做了什么错误..
答案 0 :(得分:2)
您需要在“范围”中添加“rw_nus”。这只允许应用程序共享更新...这是你的错误,否则所有代码都正确的人..
- (void)requestTokenFromProvider
{
OAMutableURLRequest *request =
[[[OAMutableURLRequest alloc] initWithURL:requestTokenURL
consumer:self.consumer
token:nil
callback:linkedInCallbackURL
signatureProvider:nil] autorelease];
[request setHTTPMethod:@"POST"];
OARequestParameter *nameParam = [[OARequestParameter alloc] initWithName:@"scope"
value:@"r_fullprofile+r_contactinfo+r_emailaddress+r_network+r_basicprofile+rw_nus"];
NSArray *params = [NSArray arrayWithObjects:nameParam, nil];
[request setParameters:params];
OARequestParameter * scopeParameter=[OARequestParameter requestParameter:@"scope" value:@"r_fullprofile r_contactinfo r_emailaddress r_network r_fullprofile rw_nus"];
[request setParameters:[NSArray arrayWithObject:scopeParameter]];
OADataFetcher *fetcher = [[[OADataFetcher alloc] init] autorelease];
[fetcher fetchDataWithRequest:request
delegate:self
didFinishSelector:@selector(requestTokenResult:didFinish:)
didFailSelector:@selector(requestTokenResult:didFail:)];
}
将此替换为 oAuthloginView.m
答案 1 :(得分:0)
你可以使用一个很棒的lib来分享:https://www.cocoacontrols.com/controls/linkedin-share
或直接来自GitHub:https://github.com/pmilanez/MIS-Linkedin-Share
它包含在MIT许可证中,也可用于商业项目。
希望这有帮助。