делиться данными с профилем пользователя LinkedIn API для обновления статуса

Я работаю над программой, которая передает данные в профиль пользователя LinkedIn. Для этого я использую Delphi XE2, OAuth и LinkedIn API. Я могу получить токен доступа. Затем я хочу обновить статус. Итак, мой код

procedure TForm1.Button2Click(Sender: TObject);
var
IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL ;
Url,sign  : String;
Response     : TStringStream;
slist        : TStringList;
str          : WideString;
Arequest1    : TOAuthRequest;
AuthHeader   : WideString;
begin
   with http do
   Begin
    IdSSLIOHandlerSocketOpenSSL1 := TIdSSLIOHandlerSOcketOpenSSL.Create(nil);
    with idSSLIOHandlerSocketOpenSSL1 do
    begin
      SSLOptions.Method := sslvTLSv1;
      SSLOptions.SSLVersions := [sslvTLSv1];
      SSLOptions.Mode := sslmBoth;
      SSLOptions.VerifyMode := [];
      SSLOptions.VerifyDepth := 0;
      host := '';
    end;
    IOHandler := IdSSLIOHandlerSocketOpenSSL1;
    AllowCookies := True;
    Request.ContentRangeEnd := 0;
    Request.ContentRangeStart := 0;
    Request.ContentType := 'application/xml';
    Request.ContentEncoding := 'utf-8';
    Request.BasicAuthentication := False;
    Request.Connection   := 'Keep-Alive';
    request.host := 'api.linkedin.com';
    Request.Accept := 'text/xml, */*';
    Request.UserAgent  :=  'Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 Firefox/13.0' ;
    HTTPOptions := [hoForceEncodeParams];
   end;
     Url := 'https://api.linkedin.com/v1/people/~/shares';
     Consumer    := nil;
     Consumer    := TOAuthConsumer.Create(ConsumerKey, ConsumerSecret);
     Arequest1   := TOAuthRequest.Create(Url);
     sign        := HMAC.build_signature(Arequest1,Consumer,Token);
     sign        := TOAuthUtil.urlEncodeRFC3986(sign);
     http.Request.CustomHeaders.Clear;
     AuthHeader     := 'OAuth '+ 'oauth_nonce="'+Arequest1.GenerateNonce+'",'+  'oauth_signature_method="'+HMAC.get_name+'",'+ 'oauth_timestamp="'+Timestamp+'",'+ 'oauth_consumer_key="'+Consumer.Key+'",'+ 'oauth_token="'+Token.Key+'",'+ 'oauth_signature="'+sign+'",'+ 'oauth_version="1.0"';
      http.Request.CustomHeaders.Add(AuthHeader);
      slist       := TStringList.Create;

      slist.Text  := '<?xml version="1.0" encoding="UTF-8"?><share><comment>Posting from the API using XML</comment>'+
                     '<content><title>A title for your share</title><submitted-url>http://developer.linkedin.com</submitted-url>'+
                     '<submitted-image-url>http://lnkd.in/Vjc5ec</submitted-image-url></content><visibility>'+
                     '<code>anyone</code></visibility></share>';
    Response    := TStringStream.Create;
    http.Request.ContentLength  := length(slist.Text);
  try
     http.post(Url,slist,Response);
  Finally
    ShowMessage(Response.DataString);
    http.Free;
    ARequest.Free;
  end;
end;

Я столкнулся с 401 неавторизованным. Пожалуйста, проверьте мои вопросы @A1rPun. Пожалуйста помогите


person vikas    schedule 18.06.2012    source источник


Ответы (1)


Спасибо за предоставление полного примера кода. Я видел, как вы прокомментировали свой предыдущий вопрос что вы используете indy 10 в Delphi XE2.

Проблема может заключаться в том, что с аутентификацией SSL в indy 10 что-то не так. to-google-calendar-apis-over-ssl/10823262#10823262">Полное объяснение здесь Что вы можете сделать, так это попытаться получить стабильную версию независимых компонентов.

В коде вроде нет ошибок, за исключением пары ресурсов, которые можно было бы высвободить ;).

Я очень надеюсь, что при обновлении вашего инди ваша проблема решится.

person A1rPun    schedule 19.06.2012
comment
Я пробовал обновить indy(10.5.8) из svn Revision(4771). Все еще сталкиваюсь с той же проблемой 401 Unauthorized. Пожалуйста, помогите мне @A1rPun. Я пробую много решений. - person vikas; 20.06.2012
comment
Привет, @A1rPun, ты не получил мои вопросы? Пожалуйста, скажите мне что-нибудь. Я получаю собственный статус в XML, но не публикую сообщение. Пожалуйста, помогите мне. Если у вас есть время, я хочу с вами пообщаться. Поэтому, пожалуйста, свяжитесь со мной..... - person vikas; 22.06.2012
comment
Пожалуйста, помогите мне. До сих пор я не публикую xml с заголовком. Все время сталкиваюсь с ошибкой 401. Мой ответ: ‹status›401‹/status› ‹timestamp›1340895781480‹/timestamp› ‹request-id›BYE79V9AXB‹/request-id› ‹error-code›0‹/error-code› ‹message›[unauthorized]. OAU:2j71bnoc4x5f|3b2f15bd-a2c8-474f-ae05-541dd9b76468|*01|*01:1340895531:PxhePw0/XHdvPz9cP3k/Px5WXz8=‹/message› ‹/error› Пожалуйста, помогите мне ........... . - person vikas; 28.06.2012