1

私はpubsubエミュレータをローカルで実行し、pubsub上で実行している既存のサービスでメッセージを送信しようとしました。メッセージは受信されず、ログには認証エラーがあります。GCloud pubsubエミュレータは "PUBSUB_EMULATOR_HOST"環境変数を尊重しません

[pubsub] Jan 22, 2017 3:43:16 PM com.google.cloud.iam.testing.v1.shared.authorization.AuthInterceptor interceptCall 
[pubsub] INFO: Authentication interceptor: Header value is null 
[pubsub] Jan 22, 2017 3:43:16 PM com.google.cloud.iam.testing.v1.shared.authorization.AuthInterceptor interceptCall 
[pubsub] INFO: Authentication interceptor: invalid or missing token 

私はdotnetとnodejの両方からパブリッシュとプルするリクエストを出しています。

C#

var creds = GoogleCredential.GetApplicationDefaultAsync().Result; 
if (creds.IsCreateScopedRequired) { 
    creds = creds.CreateScoped(new [] { PubsubService.Scope.Pubsub }); 
} 

return new PubsubService(
    new BaseClientService.Initializer() { 
     HttpClientInitializer = creds, 
     ApplicationName = "My Wonderful App" 
    } 
); 

NodeJs

var pubsub = require('@google-cloud/pubsub'); 

var pubsubClient = pubsub({ 
    projectId: config.get('GCLOUD_PROJECT') 
}); 

答えて

0

ヘッダー値nullは赤いハリングです。 dotnet sdkはnodejs sdkのように環境変数を尊重していないようです。私はjskeetに対応し、彼はエミュレータの使用を有効にする方法を示すためにドキュメントを追加するために問題を作成しました:https://github.com/GoogleCloudPlatform/google-cloud-dotnet/issues/859

は、ここで私はC#の

private static PublisherClient CreatePublisherClient() { 
    var emulatorHostAndPort = Environment.GetEnvironmentVariable("PUBSUB_EMULATOR_HOST"); 
    if (String.IsNullOrWhiteSpace(emulatorHostAndPort)) { 
     return PublisherClient.Create(); 
    } else { 
     var channel = new Channel(emulatorHostAndPort, ChannelCredentials.Insecure); 
     return PublisherClient.Create(channel); 
    } 
} 
でPublisherClientを作成した方法です
関連する問題