gpt4 book ai didi

c# - 服务帐户 Google Analytics OAuth AccessType = Offline C#

转载 作者:可可西里 更新时间:2023-11-01 08:37:49 26 4
gpt4 key购买 nike

我有一个可以访问 Google Analytics 的帐户的凭据,

我希望使用 Analytics Core Reporting API http://code.google.com/apis/analytics/docs/gdata/home.html

我找到了使用用户名/密码调用 setUserCredentials 的示例,但看到评论说这不太安全/请求限制较低(并且在最新的客户端中不存在)。

此外,我还看到了使用 oauth 的示例,但需要用户交互并授予对用户 google 帐户的访问权限。

但是我希望运行一项不需要任何用户交互的服务,并连接到预定义的谷歌帐户(与查看它的用户无关)。

然后我可以将结果存储在数据库中,最终用户可以从数据库中查询结果。

我已经看到有关在您首次登录时使用 AccessType = Offline 的信息,然后返回一个访问 token 和一个刷新 token 。 http://code.google.com/apis/accounts/docs/OAuth2WebServer.html#offline

但在我的示例中,最终用户永远不会登录到应用程序。我可以有一个单独的管理应用程序来获取刷新 token ,并将刷新 token 存储在配置/查找表中吗?然后主应用程序可以使用从配置/查找表中提取的刷新 token ,并获取访问 token 以查询 Google Analytics 帐户。

我正在寻找一个使用 AccessType = Offline 的 C# 示例,并将刷新 token 的获取和使用刷新 token 获取访问 token 以查询 Google Analytics 帐户分开。

最佳答案

创建您的应用 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

YOUR_APP_IDYOUR_CALL_BACK_URL 更改为相关值。

重要的是要包含 access_type=offline

按授予访问权限,这将重定向到 HTTP://YOUR_CALL_BACK_URL?code=THIS_IS_YOUR_CODE .复制 URL 中的代码。

使用代码,使用 CMD 提示请求刷新 token 。

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

已将 THIS_IS_YOUR_CODEYOUR_APP_IDYOUR_APPS_SECRET_CODEYOUR_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

并从 List<system.string> 更改属性维度到 string .

否则你会像我一样得到一个错误,而这个人做到了 http://www.evolutiadesign.co.uk/blog/using-the-google-analytics-api-with-c-shar/

然后您可以使用您的刷新 token ,在没有用户交互的情况下为您生成一个访问 token ,并使用访问 token 针对 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;
}
}

关于c# - 服务帐户 Google Analytics OAuth AccessType = Offline C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9366380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com