4

OAuth-Sample-Client コードを使用して、Linked Invitation API を介して電子メール アドレスから招待状を送信しています。開発者サイトで説明されているのと同じ本体を作成しましたが、現在 401 のエラーが発生しています。多くの検索を行いましたが、どのサイトやフォーラムからも解決策が見つかりませんでした。私の回答は以下の通りです。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<error>
  <status>401</status>
  <timestamp>1351159386437</timestamp>
  <request-id>YX4NRU3S7J</request-id>
  <error-code>0</error-code>
  <message>[unauthorized]. OAU:ron8e8nko3te|e0a96317-dfdc-44fb-b427-5655e02f97ed|*01|*01:1351159294:dRCDN6b3K9F/mwWAaByKZQPgeVw=</message>
</error>

ここで私のjson文字列は次のようになります:

{"body":"Say yes!","subject":"つながりへの招待","re​​cipients":{"values":[{"person":{"first-name":"test","last -name":"test","_path":"/people/email=test@test.com"}}]},"item-content":{"invitation-request":{"connect-type":"友達"}}}

以下のコードを使用して招待状を送信しました。

- (IBAction)postButton_TouchUp:(UIButton *)sender
{    
    [statusTextView resignFirstResponder];
    NSURL *url = [NSURL URLWithString:@"http://api.linkedin.com/v1/people/~/mailbox"];
    OAMutableURLRequest *request = 
    [[OAMutableURLRequest alloc] initWithURL:url
                                    consumer:oAuthLoginView.consumer
                                       token:oAuthLoginView.accessToken
                                    callback:nil
                           signatureProvider:[[OAHMAC_SHA1SignatureProvider alloc] init]];


    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

    NSDictionary *temp=[[NSDictionary alloc]initWithObjectsAndKeys:@"/people/email=test@test.com",@"_path",@"test",@"first-name",@"test",@"last-name", nil];
    NSDictionary *temp2=[[NSDictionary alloc] initWithObjectsAndKeys:temp,@"person",nil];
    NSArray *arr2=[[NSArray alloc]initWithObjects:temp2, nil];
    NSDictionary *value=[[NSDictionary alloc]initWithObjectsAndKeys:arr2,@"values", nil];
    NSDictionary *dict3=[[NSDictionary alloc]initWithObjectsAndKeys:@"friend",@"connect-type",nil];
    NSDictionary *dict4=[[NSDictionary alloc] initWithObjectsAndKeys:dict3,@"invitation-request", nil];
    NSDictionary *dict=[[NSDictionary alloc]initWithObjectsAndKeys:dict4,@"item-content",@"Say yes!",@"body",@"Invitation to connect.",@"subject",value,@"recipients", nil];
    NSLog(@"%@",[dict description]);
    NSString *updateString = [dict 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:)];    
    [request release];
}

この時点で行き詰まりました。ここから出してください。-前もって感謝します

4

3 に答える 3

3

OADataFetcher の prepare メソッドを手動で呼び出します。リクエストのボディを設定する前に置くだけです。

[request prepare];
[request setHTTPBodyWithString:updateString];

これは私のために働いています。Invitation API を使用している場合は、OADataFetcher から prepare メソッドも削除してください。

于 2012-10-25T11:45:01.743 に答える
0

Appleのコードが機能します!もう 1 つだけ、ヘッダーを忘れないでください。私はまだ同じメッセージを受け取っていました.x-li-formatとContent-typeヘッダーを追加するのを忘れていました.

于 2012-11-23T15:10:21.010 に答える