Ian*_*Ian 11 c# asp.net oauth google-analytics-api
我已获得可访问Google Analytics帐户的凭据,
我希望使用Google Analytics核心报告API http://code.google.com/apis/analytics/docs/gdata/home.html
我找到了使用用户名/密码调用setUserCredentials的示例,但是看到这些注释不太安全/请求限制较低(并且在最新客户端中不存在).
此外,我似乎使用oauth的示例,但需要用户交互并授予用户谷歌帐户的访问权限.
但是,我希望运行一项不需要任何用户交互的服务,并连接到预定义的谷歌帐户(与查看它的用户无关).
然后,我可以将结果存储在数据库中,最终用户可以从数据库中查询结果.
我第一次登录时看到过有关使用AccessType = Offline的信息,然后返回访问令牌和refreshtoken. http://code.google.com/apis/accounts/docs/OAuth2WebServer.html#offline
但在我的示例中,最终用户永远不会登录到该应用程序.我可以有一个单独的管理应用程序获取刷新令牌,并将刷新令牌存储在配置/查找表中吗?然后,主应用程序可以使用从配置/查找表中提取的刷新令牌,并获取访问令牌以便能够查询Google Analytics帐户.
我正在寻找一个使用AccessType = Offline的C#示例,并分离获取刷新令牌并使用刷新令牌获取访问令牌以查询Google Analytics(分析)帐户.
Ian*_*Ian 16
创建您的应用https://code.google.com/apis/console/
对于您的应用,请启用对Google Analytics的访问权限,并为您的网站创建OAuth 2.0客户端ID.
浏览到:
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=YOUR_APP_ID.apps.googleusercontent.com&access_type=offline&scope=https://www.googleapis.com/auth/analytics.readonly&redirect_uri=HTTP://YOUR_CALL_BACK_URL
Run Code Online (Sandbox Code Playgroud)
已经改变YOUR_APP_ID,YOUR_CALL_BACK_URL到相关的值.
重要的是包括access_type = offline.
按Grant Access,这将重定向到HTTP://YOUR_CALL_BACK_URL?code=THIS_IS_YOUR_CODE
.复制URL中的代码.
使用代码,使用CMD提示请求刷新令牌.
curl -d "code=THIS_IS_YOUR_CODE&client_id=YOUR_APP_ID.apps.googleusercontent.com&client_secret=YOUR_APPS_SECRET_CODE&redirect_uri=HTTP://YOUR_CALL_BACK_URL&grant_type=authorization_code" https://accounts.google.com/o/oauth2/token
Run Code Online (Sandbox Code Playgroud)
已经改变THIS_IS_YOUR_CODE,YOUR_APP_ID,YOUR_APPS_SECRET_CODE,YOUR_CALL_BACK_URL到相关的值.
记录返回的refresh_token.
下载最新版本的Core Reporting V3.0 .net库 http://code.google.com/p/google-api-dotnet-client/wiki/Downloads
当前版本的Google.Apis.Analytics.v3.cs中存在一个错误,要将此文件中的代码复制到您的本地解决方案(并且不要参考Google.Apis.Analytics.v3.bin) http: //code.google.com/p/google-api-dotnet-client/source/browse/Services/Google.Apis.Analytics.v3.cs?repo=samples&name=20111123-1.1.4344-beta
并将属性Dimensions从a更改List<system.string>
为a string
.
或者你会得到像我这样的错误,这个人做了http://www.evolutiadesign.co.uk/blog/using-the-google-analytics-api-with-c-shar/
然后,您可以使用刷新令牌,在没有用户交互的情况下为您生成访问令牌,并使用访问令牌针对Google Analytics运行报告.
using System;
using DotNetOpenAuth.OAuth2;
using Google.Apis.Authentication.OAuth2;
using AnalyticsService = Google.Apis.Analytics.v3.AnalyticsService;
class Program
{
public static void Main()
{
var client = new WebServerClient(GoogleAuthenticationServer.Description, "YOUR_APP_ID.apps.googleusercontent.com", "YOUR_APPS_SECRET_CODE");
var auth = new OAuth2Authenticator<WebServerClient>(client, Authenticate);
var asv = new AnalyticsService(auth);
var request = asv.Report.Get("2012-02-20", "2012-01-01", "ga:visitors", "ga:YOUR_GOOGLE_ANALYTICS_ACCOUNT_ID");
request.Dimensions = "ga:pagePath";
request.Sort = "-ga:visitors";
request.MaxResults = 5;
var report = request.Fetch();
Console.ReadLine();
}
private static IAuthorizationState Authenticate(WebServerClient client)
{
IAuthorizationState state = new AuthorizationState(new string[]{}) { RefreshToken = "REFRESH_TOKEN" };
client.RefreshToken(state);
return state;
}
}
Run Code Online (Sandbox Code Playgroud)