2012-06-18 3 views
0

Я работаю над программой, которая делится данными с пользователем LinkedIn. Я использую Delphi XE2, OAuth и LinkedIn API для того же самого. Я могу получить токен доступа. Затем я хочу обновить статус. Так что мой кодобмениваться данными с 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. Пожалуйста, помогите мне

ответ

0

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

Проблема может заключаться в том, что с аутентификацией SSL в Indy есть что-то не так. Full explanation here Что вы можете сделать, это попытаться получить стабильную версию компонентов indy.

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

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

+0

Я пробовал обновленный indy (10.5.8) от svn Редакция (4771). Все еще сталкивается с такой же проблемой. 401 Несанкционирован. Пожалуйста, помогите мне @ A1rPun. Я стараюсь много решений. – vikas

+0

Привет @ A1rPun, вы не получили мои вопросы. Пожалуйста, скажите мне что-нибудь. Я получаю собственный статус в XML, но не делаю пост. Пожалуйста, помогите мне. Если у вас есть время. Тогда я хочу пообщаться с вами. Так что, пожалуйста, свяжитесь со мной ..... – vikas

+0

Пожалуйста, помогите мне. До сих пор я не отправляю xml с заголовком. Все время сталкивается с ошибкой 401. Мой ответ BYE79V9AXB [несанкционированное]. OAU: 2j71bnoc4x5f | 3b2f15bd-a2c8-474f-ae05-541dd9b76468 | * 01 | * 01: 1340895531: PxhePw0/XHdvPz9cP3k/Px5WXz8 = Пожалуйста, помогите мне ............ – vikas

Смежные вопросы