如何使用OAuth获取Google Analytics数据?

时间:2011-02-15 15:31:59

标签: c# .net oauth google-analytics authsub

Hy先生,我们正在开发一个系统,为用户提供访问Google Analytics的权限。我正在尝试以这种方式实现它,因此用户无需在我们的网站上输入他们的Google登录凭据,因此尝试使用他们的登录信息来使其工作。

我有一个解决方案,可以使用用户的电子邮件和密码进行分析。我正在寻找一种解决方案,它不需要用户的电子邮件和密码,但找不到任何东西。

怎么做?任何建议或链接将不胜感激。

感谢

4 个答案:

答案 0 :(得分:11)

好的,伙计们,经过几天的挣扎,我终于弄明白了。互联网上没有文档,以前做过这些文档的人不想出于某种原因分享他们的成功。我找到了这个帮助我的discussion

要使其有效,您需要来自http://www.dotnetopenauth.net/DotNetOpenAuth和来自http://code.google.com/p/google-gdata/gdata

所以

using DotNetOpenAuth.ApplicationBlock;
using DotNetOpenAuth.OAuth;

using Google.GData.Client;
using Google.GData.Analytics;

在DotNetOpenAuth中,您需要一个名为OAuthConsumer的示例项目。 将其更改为对Google Analytics的最高授权:

GoogleConsumer.RequestAuthorization(google, GoogleConsumer.Applications.Analytics);

这将使您获得令牌和令牌的秘密。 您可以像这样使用它们:

        GOAuthRequestFactory requestFactory = new GOAuthRequestFactory("cp", TokenManager.ConsumerKey); //ConsumerKey actually is the name of web application
        requestFactory.ConsumerKey = TokenManager.ConsumerKey;
        requestFactory.ConsumerSecret = TokenManager.ConsumerSecret;
        requestFactory.Token = AccessToken;
        requestFactory.TokenSecret = TokenManager.GetTokenSecret(AccessToken);
        requestFactory.UseSSL = true;
        AnalyticsService service = new AnalyticsService(requestFactory.ApplicationName); // acually the same as ConsumerKey
        service.RequestFactory = requestFactory;

        const string dataFeedUrl = "https://www.google.com/analytics/feeds/data";

        DataQuery query1 = new DataQuery(dataFeedUrl);

您可以使用此服务,例如herehere

最后一件事,您将无法在localhost上尝试对其进行测试,因此您需要一个必须在Google here注册的域名才能获得消费者密钥和密钥< / p>

答案 1 :(得分:1)

用于Google数据身份验证的.NET/C# class可用于访问Google Analytics数据导出API(因为API是Google数据标准的一部分,但您可能需要特定于Google Analytics调整。)*

最好通过创建Google Registered Application来管理身份验证,因为这样您就可以在没有安全警告的情况下进行身份验证(并且就此而言,安全性失误)。

支持的身份验证有三种形式; “安全&#39; /无密码”是OAuthAuthSub(这是OAuth的Google专有版本); Google提供的硬编码用户名和密码版本为&#39; ClientLogin&#39;,对于多用户应用程序而言,它不被视为安全或理想选择。

*(因为您标记了问题

编辑:有关在.NET库中使用AuthSub或OAuth的更多详细信息:

AuthSubSupport:http://code.google.com/p/google-gdata/wiki/AuthSubSupport

有关如何使用库进行OAuth身份验证的代码示例:http://code.google.com/apis/gdata/docs/auth/oauth.html#2LeggedOAuth(单击.NET选项卡)。

答案 2 :(得分:0)

使用OAuth的基础知识在这里:http://code.google.com/apis/accounts/docs/OpenID.html#working

使用OAuth进行身份验证:http://code.google.com/apis/accounts/docs/OAuth.html

使用OAuth对用户进行身份验证后,您将获得与您从Google的登录API中获取的请求令牌相同的请求令牌。从那里,它应该与用户名/密码相同。

答案 3 :(得分:-1)

我认为你不需要搞砸OAuth。

google analytics api允许您传递凭据。从这个数据Feed示例开始。

http://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/samples/Analytics_DataFeed_Sample/dataFeed.cs

// Configure GA API and do client login Authorization.
AnalyticsService asv = new AnalyticsService("gaExportAPI_acctSample_v2.0");
asv.setUserCredentials(clientUser, clientPass);

在此下载客户端库

http://code.google.com/apis/analytics/docs/gdata/gdataLibraries.html

要了解数据查询,请使用此方法,然后将值复制到上面的示例中

http://code.google.com/apis/analytics/docs/gdata/gdataExplorer.html