我正在尝试做的是:我正在尝试在服务器端生成一个访问令牌,该令牌将用于验证用户,如本例所示:
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写入我创建的Google Analytics(分析)页面。
问题是,当我去查看报告时,我从Chrome收到403错误。
对象:“ {” error“:{” errors“:[{” domain“:” global“,” reason“:” insufficientPermissions“,” message“:”用户没有任何Google Analytics(分析)帐户。“}],”代码”:403,“消息”:“用户没有任何Google Analytics(分析)帐户。”}}”标题:对象缓存控件:“专用,最大年龄= 0”内容编码:“ gzip”内容长度:“ 146“内容类型:”应用程序/ json; charset = UTF-8“日期:”星期五,2016年11月18日18:25:08 GMT“到期:”星期五,2016年11月18日18:25:08 GMT“服务器:” GSE”变化:“来源,X来源” www-authenticate:“承载域=“ https://accounts.google.com/”,错误= insufficient_scope,范围=“ https://www.googleapis.com/auth /analytics.edit“”原型:Object__defineGetter__:defineGetter()defineSetter:defineSetter()lookupGetter:lookupGetter()lookupSetter:lookupSetter()构造函数:Object()hasOwnProperty:hasOwnProperty()isPrototypeOf:isPrototypeE(:propertyIs: toLocaleString()toString:toString()valueOf:valueOf()获取原型:proto()设置原型:proto()结果:对象错误:对象代码:403错误:数组[1] 0:对象长度:1__proto__:数组[0]消息:“用户没有任何Google Analytics(分析)帐户。”原型: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未捕获的对象{结果:对象,主体:“ {” error“:{” errors“:[{” domain“:” global“,” reason“:” i…er没有任何Google Analytics(分析)帐户。“}}”,标题:对象,状态:403,statusText:空}(匿名函数)@ cb = gapi.loaded_0:67
现在,我可以使用OAuth2协议生成令牌,并在用户登录到他/她的帐户时显示该令牌,但是我想绕过该令牌。我遇到的问题是,我看不到应该为该帐户设置权限的位置。我进入了IAM和Admin,并在两个不同的服务帐户上启用了域范围委派进行测试。我设置了每个可以想象的权限(对所有者+ 18个其他权限有效)。我还需要在哪里设置权限,或者我正在忽略某些内容?
最佳答案
首先,将用户电子邮件设置为this here,不确定如何在VB中执行此操作。
你说:
如果用户登录到他/她的帐户,我可以使用OAuth2协议生成令牌并显示令牌,但是我正试图绕过该令牌。
但是我发现您也在尝试使用Google服务帐户,我认为该帐户仅在您是G Suite付费用户时才有效。
我花了很多时间为我的Gmail client弄清楚这一点,偶然发现了解决方案:
该权限应在Connected Apps下对每个用户可见。
但这确实意味着您的用户必须手动授予一次访问权限,之后您就可以使用Google服务帐户获取令牌。
关于vb.net - Google Analytics API和VB.net的权限错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40683953/