2013-02-26 28 views
5

UGC'ye bir web sorgulaması yapmaya çalışırken ve oAuth kullanarak kimlik doğrulaması yaparken bir sorun yaşıyorum. Ben gibi bir WebRequest yapıyorum: - auth benim jeton access_token.svc döndürülürTridion UGC servisi ve oAuth kimlik doğrulaması

WebRequest wr = WebRequest.Create("http://ugc.service/odata.svc/Ratings(Id=200)"); 
wr.Headers["authorization"] = "OAuth " + auth; 

. Belgelere göre hizmetinden döndürülen simge olması gereken bir şey gibi: -

HufXeuUt% 2FYYElA8SYjJOkUkrXxV9dyXRirmKhjW% 2FB% 2FU% 3D

Ancak, access_token.svc iade edilen ettiğimi daha gibidir: -

{ "ACCESS_TOKEN": "client_id% 3dtestuser% 26expiresOn% 3d1361898714646% 26digest% 3d% 2fW% 2fvyhQneZHrm1aGhwOlgLtA9xGWd77hkxWbjmindtM% 3d", "expires_in": 300}

çeşitli dizeleri ayıklamak için JSON çözümlenir ettik ve Bunları yetkilendirmeye geçmeye teşebbüs ettim ama ne yaparsam yapayım. gs - "ERROR OAuth2AccessToken - Özet yanlıştır." Tam olarak hangi belirtecin bir parçası ve hangi biçimden yetkilendirmeye geçmeliyim?

çok teşekkürler

John

+0

Zor soru, OAuth ile neredeyse hiç deneyimim yok. Ancak, başlıklardan geçen özelliklerin oauth_ ör. oauth_consumer_key, oauth_token. Döndürülen özellikler bir sorgu dizesinde kullanılabilir durumda görünüyor. Bir OAuth kütüphanesi kullanmak size biraz yardımcı olabilir. http://oauth.net/code/ –

+1

Bu yüzden Tridion yerine bir sorun gibi görünüyor oauth ve odata eklemek için yeniden etiketledim. Bu konularla ilgili soruları da aramayı deneyin. –

cevap

5

Bahsettiğiniz gibi, protokol şudur:

  1. İhtiyacınız (erişim belirteci son noktaya bir post isteği jetonu almak üzere yapmak Burada client_id ve client_secret'inizi üstbilgiler veya sorgu parametreleri olarak belirtmek için);

  2. Buna benzer bir yanıt alırsınız: {"access_token":"sometoken","expires_in":300}; 2.1 Tanıma, kodun url olarak kodlanması ve UTF-8 biçiminde olması, yani Java tarafında URLDecoder.decode("sometoken", "UTF-8"); yapmalısınız. NET tarafında ise HttpUtility.UrlDecode("sometoken", System.Text.Encoding.UTF8);;

  3. Bir sonraki isteğinizin yetkilendirme üstbilgisini içermesi gerekir. Java tarafında size söz değer Client.Headers["authorization"] = "OAuth " + DecodedTokenString;

TokenAccessPoint ait cd_webservice_conf.xml (/Configuration/AuthenticationServer/SharedSecret/) tanımlanan SharedSecret SharedSecret tanımlanan aynı olması gerektiğidir kullanabilirsiniz NET tarafında builder.header("authorization", "OAuth " + decodedTokenString); süre yapmak (WebService) EndPoint'in cd_ambient_conf.xml (/Configuration/Security/SharedSecret/).

Sunucudan aldığınız jetonun kodunu doğru şekilde çözdüğünüzden emin misiniz? İki yapılandırma dosyasında uygun SharedSecret'i yapılandırdığınızdan emin misiniz?

Bu yardımcı olur umarım.

+0

Merhaba Daniel, bu daha önce güncellenemediğim için üzgünüm. Doğru bir şekilde belirttiğiniz gibi, belirtinin kod çözmesi ve bize soruna neden olan yanlış bir yapılandırma değeriydi. Şimdi her şey güzel. Sağol John – John