原因はmailaddressの指定が間違っていたことだった。 例えば、Google APIの.Net SDKでは以下のように秘密鍵のp12ファイルとメールアドレスを使って認証オブジェクトを作成する。
var certificate = new X509Certificate2(@"key.p12", "notasecret", X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer("dummy@mail.co.jp") {
Scopes = Scopes
}.FromCertificate(certificate));
このServiceAccountCredential.Initializerに渡すメールアドレスは自分の連絡先アドレスかと思っていたが、 Google Developer ConsoleでService Acocunt Keyを生成したときに一緒に作られるメールアドレスを設定しないといけなかった。
参考: