diff --git a/api/examples/ServiceCorpTest.py b/api/examples/ServiceCorpTest.py index 302b6d5..f7d97ab 100644 --- a/api/examples/ServiceCorpTest.py +++ b/api/examples/ServiceCorpTest.py @@ -17,6 +17,8 @@ sys.path.append("../src/") from ServiceCorpApi import * from TestConf import * + +## 第三方服务商接口的使用方法 api = ServiceCorpApi( "SUITE_ID", "SUITE_SECRET", diff --git a/api/examples/ServiceProviderTest.py b/api/examples/ServiceProviderTest.py new file mode 100644 index 0000000..5f3f238 --- /dev/null +++ b/api/examples/ServiceProviderTest.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python +# -*- coding:utf-8 -*- +## + # Copyright (C) 2018 All rights reserved. + # + # @File ServiceProviderTest.py + # @Brief + # @Author abelzhu, abelzhu@tencent.com + # @Version 1.0 + # @Date 2018-02-26 + # + # + +import sys +sys.path.append("../src/") + +from ServiceProviderApi import * +from TestConf import * + +api = ServiceProviderApi('CORPID', 'PROVIDER_SECRET') + +try : + response = api.httpCall( + SERVICE_PROVIDER_API_TYPE['GET_LOGIN_INFO'], + { + 'auth_code' : 'XXXXXXX', + }) + print response +except ApiException as e : + print e.errCode, e.errMsg diff --git a/api/src/CorpApi.py b/api/src/CorpApi.py index cbdd8c5..ecc1ef3 100644 --- a/api/src/CorpApi.py +++ b/api/src/CorpApi.py @@ -47,7 +47,7 @@ CORP_API_TYPE = { 'AGENT_SET' : ['/cgi-bin/agent/set?access_token=ACCESS_TOKEN', 'POST'], 'AGENT_GET_LIST' : ['/cgi-bin/agent/list?access_token=ACCESS_TOKEN', 'GET'], - 'MENU_CREATE' : ['/cgi-bin/menu/create?access_token=ACCESS_TOKEN', 'POST'], + 'MENU_CREATE' : ['/cgi-bin/menu/create?access_token=ACCESS_TOKEN', 'POST'], ## TODO 'MENU_GET' : ['/cgi-bin/menu/get?access_token=ACCESS_TOKEN', 'GET'], 'MENU_DELETE' : ['/cgi-bin/menu/delete?access_token=ACCESS_TOKEN', 'GET'], diff --git a/api/src/ServiceCorpApi.py b/api/src/ServiceCorpApi.py index c509caf..a700e43 100644 --- a/api/src/ServiceCorpApi.py +++ b/api/src/ServiceCorpApi.py @@ -14,13 +14,13 @@ from CorpApi import * SERVICE_CORP_API_TYPE = { - 'GET_CORP_TOKEN' : ['/cgi-bin/service/get_corp_token?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'], - 'GET_SUITE_TOKEN' : ['/cgi-bin/service/get_suite_token', 'POST'], + 'GET_CORP_TOKEN' : ['/cgi-bin/service/get_corp_token?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'], + 'GET_SUITE_TOKEN' : ['/cgi-bin/service/get_suite_token', 'POST'], 'GET_PRE_AUTH_CODE' : ['/cgi-bin/service/get_pre_auth_code?suite_access_token=SUITE_ACCESS_TOKEN', 'GET'], - 'SET_SESSION_INFO ' : ['/cgi-bin/service/set_session_info?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'], - 'GET_PERMANENT_CODE' : ['/cgi-bin/service/get_permanent_code?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'], - 'GET_AUTH_INFO ' : ['/cgi-bin/service/get_auth_info?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'], - 'GET_ADMIN_LIST ' : ['/cgi-bin/service/get_admin_list?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'], + 'SET_SESSION_INFO' : ['/cgi-bin/service/set_session_info?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'], + 'GET_PERMANENT_CODE': ['/cgi-bin/service/get_permanent_code?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'], + 'GET_AUTH_INFO' : ['/cgi-bin/service/get_auth_info?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'], + 'GET_ADMIN_LIST' : ['/cgi-bin/service/get_admin_list?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'], 'GET_USER_INFO_BY_3RD' : ['/cgi-bin/service/getuserinfo3rd?suite_access_token=SUITE_ACCESS_TOKEN', 'GET'], 'GET_USER_DETAIL_BY_3RD' : ['/cgi-bin/service/getuserdetail3rd?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'], } diff --git a/api/src/ServiceProviderApi.py b/api/src/ServiceProviderApi.py new file mode 100644 index 0000000..2026714 --- /dev/null +++ b/api/src/ServiceProviderApi.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python +# -*- coding:utf-8 -*- +## + # Copyright (C) 2018 All rights reserved. + # + # @File ServiceProviderApi.py + # @Brief + # @Author abelzhu, abelzhu@tencent.com + # @Version 1.0 + # @Date 2018-02-26 + # + # + +from AbstractApi import * + +SERVICE_PROVIDER_API_TYPE = { + 'GET_PROVIDER_TOKEN': ['/cgi-bin/service/get_provider_token', 'POST'], + 'GET_LOGIN_INFO' : ['/cgi-bin/service/get_login_info?access_token=PROVIDER_ACCESS_TOKEN', 'POST'], + 'GET_REGISTER_CODE' : ['/cgi-bin/service/get_register_code?provider_access_token=PROVIDER_ACCESS_TOKEN', 'POST'], + 'GET_REGISTER_INFO' : ['/cgi-bin/service/get_register_info?provider_access_token=PROVIDER_ACCESS_TOKEN', 'POST'], + 'SET_AGENT_SCOPE' : ['/cgi-bin/agent/set_scope', 'POST'], ### TODO + 'SET_CONTACT_SYNC_SUCCESS' : ['/cgi-bin/sync/contact_sync_success', 'GET'], +} + +class ServiceProviderApi(AbstractApi) : + def __init__(self, corpid, provider_secret) : + self.corpid = corpid + self.provider_secret = provider_secret + + self.provider_access_token = None + + def getProviderAccessToken(self) : + if self.provider_access_token is None : + self.refreshProviderAccessToken() + return self.provider_access_token + + def refreshProviderAccessToken(self) : + response = self.httpCall( + SERVICE_PROVIDER_API_TYPE['GET_PROVIDER_TOKEN'], + { + 'corpid' : self.corpid, + 'provider_secret': self.provider_secret, + }) + self.provider_access_token = response.get('provider_access_token') +