1

Возможно ли использовать client-side generated access token в server-side call для chromewebstore/v1.1/userlicenses/для проверки лицензии пользователя? Как проект расширения, так и проект приложения зарегистрированы в одной и той же учетной записи gmail. Я хочу, чтобы узнать, купил ли мой веб-сайт мой продюсер.Проверьте лицензию на доступ к веб-магазину Chrome с помощью Google App Engine

gapi.auth.authorize({ 
scope: [ 
"https://www.googleapis.com/auth/plus.me", 
"https://www.googleapis.com/auth/plus.login", 
"https://www.googleapis.com/auth/userinfo.email", 
"https://www.googleapis.com/auth/chromewebstore.readonly"].join(" "), 
client_id: "xxxxx" 
},() => gapi.client.myapi.check_payment().execute()) 

App код двигателя

import os 
import urllib 
import endpoints 
import httplib2 
from oauth2client import client 
from protorpc import remote 
from protorpc.message_types import VoidMessage 

EXTENSION_ID = "xxxxx" # my extension id from Chrome Web Store Developer Dashboard 
API_KEY = "xxxxx" # api key from Google APIs Console 
CLIENT_ID = "xxxxx" # OAuth 2.0 client ID from Google APIs Console 
SCOPES = [endpoints.EMAIL_SCOPE] 


@endpoints.api(name="myapi", version="v1", allowed_client_ids=[CLIENT_ID], scopes=SCOPES) 
class MyApi(remote.Service): 

    @endpoints.method(VoidMessage, VoidMessage) 
    def check_payment(self, msg): 
     user = endpoints.get_current_user() 
     assert user is not None 
     if "HTTP_AUTHORIZATION" in os.environ: 
      (tokentype, token) = os.environ["HTTP_AUTHORIZATION"].split(" ") 
      credentials = client.AccessTokenCredentials(token, 'my-user-agent/1.0') 
      http = credentials.authorize(httplib2.Http()) 
      params = urllib.urlencode({"key": API_KEY}) 
      url = "https://www.googleapis.com/chromewebstore/v1.1/userlicenses/%s?%s" % (EXTENSION_ID, params) 
      response = http.request(url) 

Реагирует с 403 статус: { "домен": "глобальный", "разум": "запрещенное", "сообщение": "Вы не \ 'т иметь доступ к данным лицензирования для идентификатора приложения: xxxxx "}

ответ

1

Итак, нет способа для этого работать, такой запрос может быть разрешен только с помощью токена, отчеканенного identity.getAuthToken.

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

  • Нет связанных вопросов^_^