0

我需要使用 Google Admin SDK Directory Service 将用户添加到我们的 gsuite 域,我使用的是服务帐户,语言是 vb.net。我的应用程序在 Visual Studio 中运行良好,但是一旦我将它发布到我的 IIS 服务器,我就会得到蟋蟀。我很茫然,几个月来一直在为此苦苦挣扎。我联系了谷歌云支持,他们认为我的代码看起来不错,但无法解决特定的编码问题。他们把我介绍到这里。
所以这是我的代码

Try
    ' service account email address
    Const serviceAccount As String = "My service account"

    ' import service account key p12 certificate.
      
    Dim certificate = New X509Certificate2("c:\googletest\accountmgmt-************.p12", "notasecret", X509KeyStorageFlags.Exportable)
                
    ' G Suite user email address
    Dim gsuiteUser = "My Superadmin Account"

    Dim serviceAccountCredentialInitializer = New ServiceAccountCredential.Initializer(serviceAccount) With {
            .User = gsuiteUser,
            .Scopes = {"https://www.googleapis.com/auth/admin.directory.user"}
        }.FromCertificate(certificate)

   
    ' request access token
    Dim credential = New ServiceAccountCredential(serviceAccountCredentialInitializer)
    If Not credential.RequestAccessTokenAsync(CancellationToken.None).Result Then 
        Throw New InvalidOperationException("Access token failed.")
    End If
    Dim service = New DirectoryService(New BaseClientService.Initializer() With {
                .HttpClientInitializer = credential,
                .ApplicationName = "AccountMgmt"
            })
    
    Dim user As User = New User()
    Dim Name As UserName = New UserName
    Name.FamilyName = "Testy"
    Name.GivenName = "Test1"
    user.Name = Name
    user.Password = "Password123!"
    user.PrimaryEmail = "ttesty@mydomain.com"
    Dim results As User = service.Users.Insert(user).Execute()
       

Catch ep As Exception
    Console.WriteLine(ep.ToString())
End Try

正如我所说,它在我的 Visual Studio 开发框中运行良好,但是当我将它发布到我的 IIS 服务器并执行它时,我没有得到任何迹象表明它做了任何事情并且没有创建帐户。非常感谢 vb.net 或 c#.net 中的任何建议

4

1 回答 1

0

我可以看到您正在尝试使用系统路径“c:...”加载证书,这很可能会返回 IO 错误。尝试将路径更改为“Server.MapPath()”以加载证书。

于 2020-10-09T11:59:07.203 回答