0

这是我尝试做的事情,我从我们的数据库中获得了一个带有登录页面的网页,其中包含凭据,然后一旦登录,它应该将您重定向到您应该在图表中看到数据的主页。

问题是我使用了 gdata v2.4,但每次我想发出请求时,我都必须再次设置凭据,然后使用 oauth 2.0 的 v3.0 它说我们不再需要通过访问令牌进行此操作。

我设法让它工作,但问题是如果用户被要求使用 gmail 帐户登录,并且电子邮件和密码与请求的配置文件 ID 不匹配,它会给出 403 错误(禁止访问)这是代码。我尝试使用服务帐户没有机会,有人知道这是什么问题吗?

 log4net.Config.XmlConfigurator.Configure();
    //string Scope = AnalyticsService.Scopes.Analytics.ToString().ToLower();
    //string scopeUrl = "https://www.google.com/analytics/feeds/" + Scope;
    string Scope = "https://www.google.com/analytics/feeds/";
    const string ServiceAccountId = "xxxxxxxxxxx.apps.googleusercontent.com";
    const string ServiceAccountUser = "xxxxxxxxxxx@developer.gserviceaccount.com";
    string key = string.Empty;
    foreach (string keyname in Directory.GetFiles(Server.MapPath("/"), "*.p12", SearchOption.AllDirectories))
    {
        key = keyname;
    }

    AssertionFlowClient client = new AssertionFlowClient(
        GoogleAuthenticationServer.Description, new X509Certificate2(key, "notasecret", X509KeyStorageFlags.Exportable))
    {
     Scope = Scope,   
        ServiceAccountId = ServiceAccountUser//,ServiceAccountUser = ServiceAccountUser
    };
      WebServerClient myWebServerClient = new WebServerClient(GoogleAuthenticationServer.Description);
    myWebServerClient.ClientIdentifier = this.ClientID;
    myWebServerClient.ClientSecret = this.ClientSecret;
    OAuth2Authenticator<WebServerClient> authenticator = new OAuth2Authenticator<WebServerClient>(myWebServerClient, GetAuthorization);

    AnalyticsService service = new AnalyticsService(authenticator);
    string profileId = Session["_ProfileID"].ToString() ;
    string startDate = StartDate;
    string endDate = EndDate;
    string metrics = "ga:visits";
    DataResource.GaResource.GetRequest request = service.Data.Ga.Get(profileId, startDate, endDate, metrics);
    request.Dimensions = "ga:date";
    request.StartIndex = 1;
    request.MaxResults = 500;
    GaData data = request.Fetch();
    return data;
4

1 回答 1

0

不要再打扰了,我通过离线访问得到了它。感谢您显示支持

于 2013-01-17T12:58:31.260 回答