使用谷歌分析时,无效的凭据错误是comimg

时间:2015-02-27 04:55:58

标签: c# asp.net google-oauth google-analytics-api google-api-dotnet-client

  1. 我正在使用Google Analytics API来显示Google分析数据,但我是 在行invalid credential error
  2. 获取AccountFeed accountFeed = service.Query(query);
  3. gmail用户名和密码以及Google Analytics凭据是否相同?
  4. 在AccountFeed accountFeed = service.Query(query);
  5. 中必须传递哪些凭据

    代码:

    public partial class _Default : System.Web.UI.Page
    {
        Int32 _intVisists = 0;
        Int32 _intPageViewVisit = 0;
        protected void Page_Load(object sender, EventArgs e)
        {
            RefreshFeed();
    }
    private void RefreshFeed()
    {
    
        string userName = "xyz@gmail.com";
        string passWord = "xyz";
        string gkey = "AIzaSfafaG_JUzUqkKsPd0-mPBZO4GrDF1hbbbb";
         string dataFeedUrl = "https://www.google.com/analytics/feeds/data" + gkey;
    
    
        AccountQuery query = new AccountQuery();
    
        AnalyticsService service = new AnalyticsService(AnalyticsService.GAnalyticsService);
        if (!string.IsNullOrEmpty(userName))
        {
            service.setUserCredentials(userName, passWord);
        }
        string str = "";
        AccountFeed accountFeed = service.Query(query);
        foreach (AccountEntry entry in accountFeed.Entries)
        {
            str = entry.ProfileId.Value;
        }
    
    
        DataQuery query1 = new DataQuery(dataFeedUrl);
    
        query1.Ids = str;
        query1.Metrics = "ga:visits,ga:bounces";
        query1.Sort = "ga:visits";
        query1.GAStartDate = DateTime.Now.AddMonths(-1).AddDays(-2).ToString("yyyy-MM-dd");
        query1.GAEndDate = DateTime.Now.AddDays(-3).ToString("yyyy-MM-dd");
        query1.StartIndex = 1;
    
        int cnt = 0;
        double incntDone = 0.0;
        DataFeed dataFeed11 = service.Query(query1);
        foreach (DataEntry entry in dataFeed11.Entries)
        {
            string st = entry.Title.Text;
            string ss = entry.Metrics[0].Value;
    
    
            string _str = DisplayPercentage(double.Parse(entry.Metrics[1].Value) / int.Parse(entry.Metrics[0].Value));
            double incnt = double.Parse(entry.Metrics[1].Value) / double.Parse(entry.Metrics[0].Value);
            incntDone = Math.Round(incnt * 100, 2);
            cnt = cnt + int.Parse(ss);
    
        }
        Response.Write("Bounce Rate : " + incntDone + "<br/>");
    
    
        query1.Ids = str;
        query1.Metrics = "ga:pageviews";
        query1.Sort = "ga:pageviews";
        query1.GAStartDate = DateTime.Now.AddMonths(-1).AddDays(-2).ToString("yyyy-MM-dd");
        query1.GAEndDate = DateTime.Now.AddDays(-3).ToString("yyyy-MM-dd");
    
        DataFeed dataFeedpageviews = service.Query(query1);
        foreach (DataEntry entry in dataFeedpageviews.Entries)
        {
            string st = entry.Title.Text;
            string ss = entry.Metrics[0].Value;
            _intPageViewVisit = Int32.Parse(ss);
            Response.Write("<br/>");
            Response.Write("Total PageView : " + ss);
            Response.Write("<br/>");
        }
    
    
        query1.Ids = str;
        query1.Metrics = "ga:visits";//visitors
        query1.Sort = "ga:visits";
        query1.GAStartDate = DateTime.Now.AddMonths(-1).AddDays(-2).ToString("yyyy-MM-dd");
        query1.GAEndDate = DateTime.Now.AddDays(-3).ToString("yyyy-MM-dd");
        query1.StartIndex = 1;
        DataFeed dataFeedVisits = service.Query(query1);
        foreach (DataEntry entry in dataFeedVisits.Entries)
        {
            string st = entry.Title.Text;
            string ss = entry.Metrics[0].Value;
            _intVisists = Int32.Parse(ss);
            Response.Write("<br/>");
            Response.Write("Total Visits : " + ss);
            Response.Write("<br/>");
        }
    

    enter image description here

1 个答案:

答案 0 :(得分:2)

  1. 无效的凭据错误意味着您未正确进行身份验证。 Google AnalyticsAPI需要Oauth2或服务帐户身份验证。您似乎尝试使用登录名和密码登录,这称为客户登录,不适用于Google AnalyticsAPI
  2. 没有Gmail用户名无效Google Analytics凭据。
  3. 您应该将其传递给有效的UserCredential
  4. 登录示例:

    /// <summary>
            /// Authenticate to Google Using Oauth2
            /// Documentation https://developers.google.com/accounts/docs/OAuth2
            /// </summary>
            /// <param name="clientId">From Google Developer console https://console.developers.google.com</param>
            /// <param name="clientSecret">From Google Developer console https://console.developers.google.com</param>
            /// <param name="userName">A string used to identify a user.</param>
            /// <returns></returns>
            public static AnalyticsService AuthenticateOauth(string clientId, string clientSecret, string userName)
            {
    
                string[] scopes = new string[] { AnalyticsService.Scope.Analytics,  // view and manage your analytics data
                                                 AnalyticsService.Scope.AnalyticsEdit,  // edit management actives
                                                 AnalyticsService.Scope.AnalyticsManageUsers,   // manage users
                                                 AnalyticsService.Scope.AnalyticsReadonly};     // View analytics data
    
                try
                {
                    // here is where we Request the user to give us access, or use the Refresh Token that was previously stored in %AppData%
                    UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets { ClientId = clientId, ClientSecret = clientSecret }
                                                                                                 , scopes
                                                                                                 , userName
                                                                                                 , CancellationToken.None
                                                                                                 , new FileDataStore("Daimto.GoogleAnalytics.Auth.Store")).Result;
    
                    AnalyticsService service = new AnalyticsService(new BaseClientService.Initializer()
                    {
                        HttpClientInitializer = credential,
                        ApplicationName = "Analytics API Sample",
                    });
                    return service;
                }
                catch (Exception ex)
                {
    
                    Console.WriteLine(ex.InnerException);
                    return null;
    
                }
    
            }
    

    代码从Google Analytics .net sample project

    中删除
相关问题