Как использовать python для аутентификации с помощью Google в grpc? (У меня есть исполняемый PHP-код)

Я получил некоторые .proto-файлы от поставщика услуг, чтобы получить данные о запасах. Они дают мне PHP-код, но мне нужно использовать python. Я пытаюсь сделать то же самое в python, но я потерпел неудачу и потерпел неудачу. Официальные документы не очень clear..and мой навык программирования настолько низок. И это мой код python (основная часть), когда я запускаю этот код, появится сообщение об ошибке: «<_ Rendezvous> RPC, который завершен (StatusCode.UNIMPLEMENTED, Метод не найден: xxxxxxxxxxxxxxxxx.HistoricalQuoteService / getTodayM1Quotes) «Я думаю, что я не подключился к серверу. Когда я добавлю следующий код:

options.append(update_metadata2) 

Сообщение об ошибке изменится на: «слишком много значений для распаковки»

 symbol = common_pb2.Symbol() symbol.code = "BABA" symbol.market = common_pb2.US symbol.type = common_pb2.Stock market_request = marketData_pb2.MarketDataRequest() market_request.symbol.code = symbol.code market_request.symbol.market = symbol.market market_request.symbol.type = symbol.type market_request.language = common_pb2.zhHans print(market_request) try: path = os.path.abspath('.') pemPath = path + '/open_test_cert.pem' transport_creds = grpc.ssl_channel_credentials(open(pemPath).read()) options = [] update_metadata = {} update_metadata2 = {} update_metadata['UserName'] = 'xxxx' update_metadata['Password'] = 'yyyy' update_metadata2['grpc.ssl_target_name_override'] = 'open.test.yintongzhibo.com' options.append(update_metadata) # options.append(update_metadata2) channel = grpc.secure_channel("open.test.yintongzhibo.com:9002",transport_creds,options) # credentials , project= google_auth.default(scopes=(scope1,scope2,scope3)) # credentials , project= google_auth.default() # http_request = google_auth_transport_requests.Request() # metadata_plugin = AuthMetadataPlugin(credentials,http_request) # google_auth_credentials = grpc.metadata_call_credentials(metadata_plugin) # ssl_credentials = grpc.ssl_channel_credentials(open(pemPath).read()) # composite_credentials = grpc.composite_channel_credentials(ssl_credentials,google_auth_credentials) # channel = grpc.secure_channel("open.test.yintongzhibo.com:9002",composite_credentials) # channel = google_auth_transport_grpc.secure_authorized_channel(credentials,request,'open.test.yintongzhibo.com:9002') stub = historicalQuote_pb2_grpc.HistoricalQuoteServiceStub(channel) response = stub.getTodayM1Quotes(symbol) # stub = marketData_pb2_grpc.MarketDataServiceStub(channel) # response = stub.getMarketData(market_request) print(response.message) except Exception as e: print (e) 

Итак, как мне написать код python для достижения той же функции PHP-кода? И как я могу получить больше журнала ошибок? Спасибо всем! PHP-код здесь: PHP-код