Google Apps Marketplaceのアプリケーションを作成しました。私たちのアプリは誰にでもインストールされている場合にのみ動作します。しかし、問題は、一部の顧客が一部の組織ではなく誰でもアプリケーションをインストールするということです。それらの顧客に特定のメッセージを表示したいのですが、問題は、アプリが一部の組織にインストールされているか、インストールされていないかわからないことです。したがって、いくつかの組織のために私たちのアプリをインストールした顧客は、私たちのアプリを全くインストールしなかった顧客を対象としたメッセージを受け取ります。インストールボタンを表示しますが、既にインストールされているため、アプリを再インストールすると何も起こりません。アプリのステータスを「すべてのユーザーのために」変更する方法を指示します。アプリが一部の組織でインストールされているかどうかは確認できますか?
一部の組織でアプリがインストールされているかどうか調べるにはどうすればよいですか?
我々は全く我々のアプリをインストールしていないcutomersのために受信、同じエラーメッセージですFailed to retrieve access token: {
"error" : "unauthorized_client",
"error_description" : "Unauthorized client or scope in request."
}
:私たちは、Googleからの次のエラーメッセージが表示されます。
def _do_refresh_request(self, http_request):
"""Refresh the access_token using the refresh_token.
Args:
http_request: callable, a callable that matches the method signature of
httplib2.Http.request, used to make the refresh request.
Raises:
AccessTokenRefreshError: When the refresh fails.
"""
body = self._generate_refresh_request_body()
headers = self._generate_refresh_request_headers()
logger.info('Refreshing access_token')
resp, content = http_request(
self.token_uri, method='POST', body=body, headers=headers)
if resp.status == 200:
# TODO(jcgregorio) Raise an error if loads fails?
d = simplejson.loads(content)
self.token_response = d
self.access_token = d['access_token']
self.refresh_token = d.get('refresh_token', self.refresh_token)
if 'expires_in' in d:
self.token_expiry = datetime.timedelta(
seconds=int(d['expires_in'])) + datetime.datetime.utcnow()
else:
self.token_expiry = None
if self.store:
self.store.locked_put(self)
else:
# An {'error':...} response body means the token is expired or revoked,
# so we flag the credentials as such.
logger.info('Failed to retrieve access token: %s' % content)
error_msg = 'Invalid response %s.' % resp['status']
try:
d = simplejson.loads(content)
if 'error' in d:
error_msg = d['error']
self.invalid = True
if self.store:
self.store.locked_put(self)
except StandardError:
pass
raise AccessTokenRefreshError(error_msg)
アップデート1:アプリ内> Marketplaceアプリ、アプリがオフの選択ORGSまたはのために、皆のためにすることができ
これは、例外をスローするPythonの関数です。アプリのステータスを知る必要があります。
アップデート2:私はcheck_general_access
私たちのアプリケーションがアンインストールされたときにも、我々は(アプリケーションの一般的なアクセス権を持っている)真の受信を呼び出してみました。これは、check_access
がFalseを返すことを確認した後です。
@staticmethod
def check_access(admin_email):
http = httplib2.Http()
credentials = SignedJwtAssertionCredentials(
SERVICE_EMAIL,
PRIVATE_KEY,
scope='https://apps-apis.google.com/a/feeds/emailsettings/2.0/ https://www.googleapis.com/auth/admin.directory.user.readonly',
sub=str(admin_email),
)
http = credentials.authorize(http)
try:
service = build(serviceName='admin', version='directory_v1', http=http)
logging.info("Application has access to admin's %s domain" % (admin_email))
return True
except Exception as e:
logging.info("Application does not have access to admin's %s domain (exception: %s)" % (admin_email, e.message))
return False
@staticmethod
def check_general_access():
http = httplib2.Http()
credentials = SignedJwtAssertionCredentials(
SERVICE_EMAIL,
PRIVATE_KEY,
scope='https://apps-apis.google.com/a/feeds/emailsettings/2.0/ https://www.googleapis.com/auth/admin.directory.user.readonly',
)
http = credentials.authorize(http)
try:
service = build(serviceName='admin', version='directory_v1', http=http)
logging.info("Application has general access")
return True
except Exception as e:
logging.info("Application does not have general access (exception: %s)" % e.message)
return False
「組織向けにインストールされた」とは、具体的に説明してください! @KlausD。 –
更新された質問をご覧ください。 – Uri
更新はそれを明確にしません。 – Psytho