споделяйте данни в потребителския профил на 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 unauthorized. Моля, проверете моите въпроси @A1rPun. Моля, помогни ми


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


Отговори (1)


Благодарим ви, че предоставихте пълен примерен код. Видях да коментирате предишния си въпрос че използвате indy 10 в Delphi XE2.

Проблемът може да е, че има нещо нередно с SSL удостоверяването в indy 10. Пълно обяснение тук Това, което можете да направите, е да се опитате да получите стабилна версия на компонентите indy.

Кодът изглежда няма грешки с изключение на няколко ресурса, които можеха да бъдат освободени ;).

Наистина се надявам, че когато актуализирате вашия indy, проблемът ви ще се реши.

person A1rPun    schedule 19.06.2012
comment
Опитах актуализиран indy(10.5.8) от svn Revision(4771). Все още се сблъскваме със същия проблем 401 Неупълномощен. Моля, помогнете ми @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