laurent22300 | Bonjour,
Je suis en train de dévéloper un widget qui utilise l'API eBay. J'ai réussi à le faire marcher localement - le widget envoi des requêtes à eBay et récupère la réponse sans aucun problème.
Par contre, dès que j'essaye de lancer le swf depuis une page web, la requête n'est pas envoyées et cette erreur de sécurité est générée :
[SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"]
J'envoi mes requêtes à l'aide de URLLoader.load()
J'ai vérifié le fichier crossdomain.xml de eBay et normalement il devrait accepter n'importe quelle requête (voir https://api.ebay.com/crossdomain.xml )
Ci-dessous j'ai attaché un test très simple pour reproduire le problème (ne faites pas attention au XML et aux headers - je suis certain qu'ils sont corrects). Si je lance le swf localement, j'obtiens le message "SUCCESS" tandis que si je le lance depuis un site web j'obtiens "SECURITY ERROR".
Est-ce que vous voyez quelque chose qui cloche dans mon code ? Sinon avez-vous des suggestions sur la façon de débugger ça ?
Merci d'avance,
Laurent
Code :
- package laudev {
-
- import flash.events.*;
- import flash.net.*;
- import flash.system.Security;
-
- public class Main extends MovieClip {
-
- private function test_complete(iEvent) {
- this.logTextField.text = "SUCCESS";
- }
- private function test_ioError(iEvent) {
- this.logTextField.text = "IO ERROR";
- }
-
- private function test_securityError(iEvent) {
- this.logTextField.text = "SECURITY ERROR";
- }
-
- public function Main() {
-
- Security.loadPolicyFile("https://api.ebay.com/crossdomain.xml" );
-
- var xml = <GeteBayOfficialTimeRequest xmlns="urn:ebay:apis:eBLBaseComponents">
- <RequesterCredentials>
- <eBayAuthToken>AgAAAA**AQAAAA**aAAAAA**S6a4Rw**nY+sHZ2PrBmdj6wVnY+sEZ2PrA2dj6wFk4CpAZaLow6dj6x9nY+seQ**Wd4AAA**AAMAAA**ITk9rZ8yVFi71W9PQkaF+g2CF5pP7ZHA0J0olhCqiqTO6YuhgaS0EPYq0TAStSYCPbnR/k6y2XySiVarz0FIR4xX9kOSgZV6KgQUUlcnynhS2vwwLtIyc0gMs1ANdaKm7ij2hR3cB3UyKAgASFnkOcd5KEQHbhVWPqYMd3prkJYz/ijfv1I0FuJKsbC38VJW0ZyTuUhiVSpPypx5vCeCzvRJrx0Yj40oCeBPX1euWD5FBF1Wac1mSewYw3hW9qg6NXLQz7q+mfDdd0IRjVanyzS8d7CSdXrEE0AupiwM0wPnt7EJ/PxVlpBusvM6sP+ngMGYEsz9gv83bwe2p0/acCPkIoj7xHqlQe8KnOIJNCdwO6cYtrXNZVAhsPlWrVkt/7+Ws8QnwJT/SVTwNJi3HFN11sI2gbKa0a1uWsRTwaCghfHRiXGES+r2rssKquFz7PmRMFBVqoW8PxsbYMP655bchnkoQMkW8aeSVDNhWyNBP4cq8Dd1M8yRRm3jwlKok/mBsmJCCLUF7FifMbMh7KlBchYQLh/RMAkdaXvyzTG5Tr76Qk9S+q4uc0KU6+kvwEoii1uWwD2V3lVLKonxhUyiGT1IxsCJbODPjqDPvHnd1qJnOvKyAsgjuh5GsQqX9hKEAq5WqVxyc7uHGA+JqmikFqnwmzj/9k1iMjxJFL2nFslMBvThSvLA6HfT2uXQRavKihpwpTD2JkLbzC7HeMSN1yaDmGnMbPXpRyqQxLteKFWFx2Cxy8waR5f8Chy3</eBayAuthToken>
- </RequesterCredentials>
- <DetailLevel>ReturnAll</DetailLevel>
- <ErrorLanguage>en_US</ErrorLanguage>
- <Version>459</Version>
- </GeteBayOfficialTimeRequest>
-
- var loader = new URLLoader();
- loader.addEventListener(Event.COMPLETE, this.test_complete);
- loader.addEventListener(IOErrorEvent.IO_ERROR, this.test_ioError);
- loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.test_securityError);
-
- var urlRequest = new URLRequest("https://api.ebay.com/ws/api.dll" );
- urlRequest.requestHeaders = [
- new URLRequestHeader("X-EBAY-API-COMPATIBILITY-LEVEL", "459" ),
- new URLRequestHeader("X-EBAY-API-DEV-NAME", "4f22fc6d-994e-4fda-9d75-e569c0c64232" ),
- new URLRequestHeader("X-EBAY-API-APP-NAME", "LaurentW-3bd3-4c82-beb6-303ab392bcb9" ),
- new URLRequestHeader("X-EBAY-API-CERT-NAME", "87eb1c11-415e-443e-a7f8-30c21f3f5058" ),
- new URLRequestHeader("X-EBAY-API-SITEID", "0" ),
- new URLRequestHeader("X-EBAY-API-CALL-NAME", "GeteBayOfficialTime" ),
- new URLRequestHeader('Content-Type', 'test/xml')
- ]
-
- urlRequest.data = '<?xml version="1.0" encoding="utf-8"?>' + xml.toXMLString();
- urlRequest.method = URLRequestMethod.POST;
-
- loader.load(urlRequest);
- }
-
- }
-
- }
|
|