Introducing AdSenseAccountStats App
For all those AdSense account owners with Windows mobiles or tablets out there, I recently released a new UWP app that may come in handy. This simple app will allow you to quickly and easily check up on your AdSense performance.Watch your monetization efforts pay off and your earnings grow
After logging in with your AdSense account and authorising the app for read-only access, you can easily see metrics such as:- Earnings Clicks, Cost Per Click
- Page Views, Click Through Rate and RPM
- Coverage
Code components that make it work
The app simply leverages Google APIs, specifically the AdSense Management API v1.4, and Google OAuth v2 for authentication of the user. Basically, all calls to the AdSense APIs have to be authenticated or else they won't work.
So the first problem was to tackle Google OAuth v2 for a UWP app. There are complexities around the Google provided libraries and support for UWP, and I have touched on these in another blog post.
OAuth v2 Authentication
The following code snippet deals with authentication successfully:
UserCredential credential;
try
{
using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
{
credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
new[] { AdSenseService.Scope.AdsenseReadonly },
"user",
CancellationToken.None,
new PasswordVaultDataStore()
);
}
}
catch (UwpCodeReceiver.AuthenticateException ex)
{
// Login failed or authorisation not granted
credential = null;
await LoginFailed(ex);
}
catch (Exception ex)
{
credential = null;
await SomethingWrong(ex);
}
Creating a client service for your API calls
Once the user has logged on and authenticated their AdSense account, and granted permissions to the app so it can access the user's AdSense details, you then create a client service to use for your API calls. Pass the credential object created by the code above to the http initializer.
var adSenseService = new AdSenseService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "AdSense Accounts Stats",
});
Setting up and executing an API request
After the user has logged on and allowed access for the app, the next piece is to construct a valid API request, execute it and handle the response in a meaningful way. This can be achieved along the following lines:
var earningsRequest = adSenseService.Reports.Generate(startString, endString);
earningsRequest.Dimension = dimensionString;
earningsRequest.UseTimezoneReporting = true;
earningsRequest.Metric = new List<string>{ "earnings","page_views","individual_ad_impressions","clicks",
"page_views_ctr","individual_ad_impressions_ctr",
"page_views_rpm","individual_ad_impressions_rpm","cost_per_click",
"ad_requests_coverage" };
var earningsResponse = await earningsRequest.ExecuteAsync();
Once you have that response object, you can use it in any way you see fit, for example use its member items as a list source etc.
Hope you enjoyed this post and if you like go grab the app from the Microsoft Store.
Cheers
MB
No comments:
Post a Comment