【发布时间】:2017-04-02 17:02:48
【问题描述】:
这是我想要做的事情:我试图在服务器端生成一个访问令牌,用于对用户进行身份验证,如本例所示:
https://ga-dev-tools.appspot.com/embed-api/server-side-authorization/
经过几次尝试,我已经在 VB.net 中编写了这段代码:
Public GA_Token As String
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim filename As String = {{path to p12 file}}
Dim serviceAccountEmail As String = {{service account generated email from IAM & Admin from console.developers.google.com of the form user@project name.iam.gserviceaccount.com}}
Dim certificate = New X509Certificate2(filename, "password", X509KeyStorageFlags.Exportable Or X509KeyStorageFlags.MachineKeySet Or X509KeyStorageFlags.PersistKeySet)
Dim Scopes As IEnumerable(Of String) = {AnalyticsService.Scope.AnalyticsReadonly}
Dim credential As New ServiceAccountCredential(New ServiceAccountCredential.Initializer(serviceAccountEmail) With {.Scopes = Scopes}.FromCertificate(certificate))
GA_Token = credential.GetAccessTokenForRequestAsync(Request.Url.ToString, CancellationToken.None).Result
End Sub
然后将 GA_Token 写入我创建的分析页面。
问题是,当我查看报告时,我从 Chrome 收到 403 错误。
Objectbody: "{"error":{"errors":[{"domain":"global","reason":"insufficientPermissions","message":"用户没有任何 Google Analytics 帐户。"} ],"code":403,"message":"用户没有任何 Google Analytics 帐户。"}}"headers: Objectcache-control: "private, max-age=0"content-encoding: "gzip"content-长度:“146”内容类型:“应用程序/json;charset=UTF-8”日期:“格林威治标准时间 2016 年 11 月 18 日星期五 18:25:08”到期:“格林威治标准时间 2016 年 11 月 18 日星期五 18:25:08”服务器:“GSE”变化:“Origin,X-Origin”www-authenticate:“Bearer realm="https://accounts.google.com/", error=insufficient_scope, scope="https://www.googleapis. com/auth/analytics.edit""proto: Object__defineGetter__: defineGetter()defineSetter: defineSetter()lookupGetter: lookupGetter()lookupSetter: lookupSetter()构造函数: Object()hasOwnProperty: hasOwnProperty()isPrototypeOf: isPrototypeOf ()propertyIsEnumerable: 公关opertyIsEnumerable()toLocaleString: toLocaleString()toString: toString()valueOf: valueOf()get proto: proto()set proto: proto()result: Objecterror: Objectcode: 403errors: Array[1]0: Objectlength: 1__proto__: Array[0]message: “用户没有任何 Google Analytics 帐户。”proto:Object__proto__:Objectstatus:403statusText:null__proto__:Object_.nH@cb=gapi.loaded_0:606_.du.Vh@cb=gapi.loaded_0:742(匿名函数)@view-selector2.js:109h.o0@cb= gapi.loaded_0:75xs @ cb=gapi.loaded_0:78Wq @ cb=gapi.loaded_0:78_.C.uea @ cb=gapi.loaded_0:77Ap @ cb=gapi.loaded_0:71 cb=gapi.loaded_0:67 Uncaught Object {result: Object, body: "{"error":{"errors":[{"domain":"global","reason":"i...er 没有任何 Google分析帐户。“}}”,标题:对象,状态:403,状态文本:null}(匿名函数)@ cb=gapi.loaded_0:67
现在,我可以使用 OAuth2 协议生成令牌并在用户登录到他/她的帐户时显示它,但我试图绕过它。我遇到的问题是我看不到应该在哪里设置帐户的权限。我进入 IAM 和 Admin 并在两个不同的服务帐户上启用域范围委派进行测试。我为它们设置了所有可以想象的权限(这适用于所有者 + 18 个其他权限)。我还需要在哪里设置权限,还是我忽略了什么?
【问题讨论】:
-
哇 16 票赞成,1 票反对……这是我见过的最低票!
-
很抱歉,我没有看到任何赞成或反对的意见。这是给我的吗?
标签: vb.net google-analytics google-api