Как избежать ошибок между сайтами при использовании API веб-магазина Google? - PullRequest
0 голосов
/ 21 декабря 2011

Я пытаюсь следовать этим простым примерам, приведенным в документации API веб-магазина Google. К сожалению, их минимальный пример PHP содержит много вещей, которые мне не нужны (и не имеют настройки).

Итак, я смотрю, как жестко запрограммировать базовый материал в HTML-файл, просто чтобы получить связь с работающими серверами Google:

Мой код выглядит так:

<html>
  <head>
  </head>
  <body>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
      purchase = function() { console.log("Old purchase function"); }
        generatedJwt = "..."; // I use a real JWT here....
        google.load('payments', '1.0', {
          'packages': ['sandbox_config'],
          callback: function()
          {
            //Success handler
            var successHandler = function(purchaseAction){
              if (window.console != undefined) {
                console.log("Purchase completed successfully.",purchaseAction);
           }
          }

          //Failure handler
          var failureHandler = function(purchaseActionError)
          {
             if (window.console != undefined)
             {
            console.log("Purchase did not complete.", purchaseActionError);
         }
           }

           var purchase = function()
           {
          goog.payments.inapp.buy({
                 'jwt'     : generatedJwt,
                 'success' : successHandler,
                 'failure' : failureHandler
              });
           }
        }
      });
   </script>
   <button class="buy-button" id="buybutton1" name="buy" type="button" onClick="purchase()">
      Buy
   </button>
 </body>

Когда я нажимаю кнопку "Купить", я получаю сообщение об ошибке от Google и следующую ошибку в консоли:

Unsafe JavaScript attempt to access frame with URL   
http://localhost/google_iap/buy_page.html 
from frame with URL
https://sandbox.google.com/checkout/inapp/static/gwt/payments.html?viewportScreenCenterX=-857.5&viewportScreenCenterY=611#id=I1_1324454042050&parent=http%3A%2F%2Flocalhost&rpctoken=166967692&_methods=onPurchaseActionStatus%2CgetJwt%2C_ready%2C_close%2C_open%2C_resizeMe.
Domains, protocols and ports must match.

Что мне нужно сделать, чтобы этот простой пример работал?

Добавление:

Я нашел более хороший пример из Google:

https://sandbox.google.com/checkout/customer/gadget/inapp/demo.html

Однако сохранение источника на моем компьютере и локальный доступ к нему (как http://localhost/google_iap/google_demo.html) приводит к той же междоменной ошибке.

1 Ответ

0 голосов
/ 22 декабря 2011

Похоже, что песочница Google была сломана . Теперь это снова работает, поэтому пример работает правильно. Однако предупреждения о межсайтовом доступе все еще существуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...