您好,我想通过我的应用在 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
selectorselector(loginViewDidFinish
name"loginViewDidFinish"
object:self.oAuthLoginView];
[self presentViewController:self.oAuthLoginView animated:YES completion:nil];
}
这是登录后处理分享的方法..
-(void) loginViewDidFinishNSNotification*)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
consumerAuthLoginView.consumer
tokenAuthLoginView.accessToken
callback:nil
signatureProvider:nil];
[request setValue"json" forHTTPHeaderField"x-li-format"];
OADataFetcher *fetcher = [[OADataFetcher alloc] init];
[fetcher fetchDataWithRequest:request
delegate:self
didFinishSelectorselector(profileApiCallResult:didFinish
didFailSelectorselector(profileApiCallResult:didFail];
}
- (void)profileApiCallResultOAServiceTicket *)ticket didFinishNSData *)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)profileApiCallResultOAServiceTicket *)ticket didFailNSData *)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
consumerAuthLoginView.consumer
tokenAuthLoginView.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)networkApiCallResultOAServiceTicket *)ticket didFinishNSData *)data
{
if (isSharedLinked)
{
NSLog(@"Shared Successfully");
linkedBtn.enabled = NO;
}
else
{
isSharedLinked = YES;
[self performSelector:@selector(postTextLinkedIn) withObject:nil afterDelay:1];
}
}
- (void)networkApiCallResultOAServiceTicket *)ticket didFailNSData *)error
{
NSLog(@"%@",[error description]);
}
- (void)postTextLinkedIn
{
NSURL *url = [NSURL URLWithString:@"https://api.linkedin.com/v1/people/~/shares"];
OAMutableURLRequest *request =
[[OAMutableURLRequest alloc] initWithURL:url
consumerAuthLoginView.consumer
tokenAuthLoginView.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:@"OST"];
OADataFetcher *fetcher = [[OADataFetcher alloc] init];
[fetcher fetchDataWithRequest:request
delegate:self
didFinishSelector:@selector(postUpdateApiCallResult:didFinish
didFailSelector:@selector(postUpdateApiCallResult:didFail];
}
- (void)postUpdateApiCallResultOAServiceTicket *)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 中成功分享,但没有文字分享..
请帮我解决这个问题...我不知道我犯了什么错误..
Best Answer-推荐答案 strong>
您需要在“范围”中添加“rw_nus”。这仅允许应用程序共享更新...这是您的错误,否则您的所有代码都是正确的人..
- (void)requestTokenFromProvider
{
OAMutableURLRequest *request =
[[[OAMutableURLRequest alloc] initWithURL:requestTokenURL
consumer:self.consumer
token:nil
callback:linkedInCallbackURL
signatureProvider:nil] autorelease];
[request setHTTPMethod:@"OST"];
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
关于ios - Linkedin Share 在我的应用程序中不起作用,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/23285468/
|