使用访问令牌来请求Google地图跟踪API [英] Use access token for request google map track API

查看:77
本文介绍了使用访问令牌来请求Google地图跟踪API的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,



当我使用X509Certificate2进行身份验证服务帐户时,我会收到一个access_token。

我请求 https://www.googleapis.com/tracks/v1/实体/创建 [ ^ ]



出现错误远程服务器返回错误:(401)未经授权。



我的代码:

Hi all,

When I use X509Certificate2 for authentication Service account, i receive an access_token.
after I request "https://www.googleapis.com/tracks/v1/entities/create[^]"

appear error "The remote server returned an error: (401) Unauthorized."

My Code:

Private Sub AuthV2()
        Dim client_id As String = "XXX@developer.gserviceaccount.com"
        Dim key As String = "XXX-privatekey.p12"
        Dim client As New WebClient()
        Dim formData As New NameValueCollection()
        Dim SCOPE As String = "https://www.googleapis.com/auth/tracks"
        Dim now As Long = unix_timestamp()
        Dim exp As Long = now + 3600
        Dim jwt_header As String = "{""alg"":""RS256"",""typ"":""JWT""}"
        Dim claim As String = "{""iss"":""" & client_id & """,""scope"":""" & SCOPE & """,""aud"":""https://accounts.google.com/o/oauth2/token"",""exp"":" & exp & ",""iat"":" & now & "}"
        Dim e1 As New System.Text.ASCIIEncoding()
        Dim clearjwt As String = Base64UrlEncode(e1.GetBytes(jwt_header)) & "." & Base64UrlEncode(e1.GetBytes(claim))
        Dim buffer As Byte() = Encoding.[Default].GetBytes(clearjwt)
        Dim cert As New X509Certificate2(key, "notasecret")
        Dim cp As New CspParameters(24, "Microsoft Enhanced RSA and AES Cryptographic Provider", DirectCast(cert.PrivateKey, RSACryptoServiceProvider).CspKeyContainerInfo.KeyContainerName)
        Dim provider As New RSACryptoServiceProvider(cp)
        Dim signature As Byte()
        signature = provider.SignData(buffer, "SHA256")
        Dim assertion As String = clearjwt & "." & Base64UrlEncode(signature)
        formData("grant_type") = "assertion"
        formData("assertion_type") = "http://oauth.net/grant_type/jwt/1.0/bearer"
        formData("assertion") = assertion
        Try
            client.Headers("Content-type") = "application/x-www-form-urlencoded"
            Dim responseBytes As Byte() = client.UploadValues("https://accounts.google.com/o/oauth2/token", "POST", formData)
            Dim Result As String = Encoding.UTF8.GetString(responseBytes)
            Dim tokens As String() = Result.Split(":"c)
            For i As Integer = 0 To tokens.Length - 1
                If tokens(i).Contains("access_token") Then
                    Me.lauth_token = (tokens(i + 1).Split(","c)(0).Replace("""", ""))
                End If
            Next
        Catch ex As WebException
        End Try
        RequestGoogleAPI()
    End Sub

Private Sub RequestGoogleAPI()
        Dim request As WebRequest
        Dim postData As String
        Dim byteArray As Byte() = Nothing
        Dim dataStream As Stream
        Dim response As WebResponse
        Try
            request = WebRequest.Create("https://www.googleapis.com/tracks/v1/entities/create")
            postData = "{""entities"":[{""name"":""ABC"",""type"":""AUTOMOBILE""},{""name"":""EFG"",""type"":""AUTOMOBILE""}]}"
            byteArray = Encoding.UTF8.GetBytes(postData)
            request.ContentType = " application/json"
            request.ContentLength = byteArray.Length
            request.Timeout = 10000
            request.Method = "POST"
            'request
            dataStream = request.GetRequestStream()
            dataStream.Write(byteArray, 0, byteArray.Length)
            dataStream.Close()

            'response
            response = request.GetResponse() '' error "The remote server returned an error: (401) Unauthorized."
            dataStream = response.GetResponseStream()
        Catch ex As Exception
        End Try        
    End Sub





请帮帮我,非常感谢!



please help me, thank you very much!

推荐答案

如果您有代理,则需要将凭据传递给请求对象。
If you have proxy you need to pass the credentials to the request object.


这篇关于使用访问令牌来请求Google地图跟踪API的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆