Chilkat Examples

ChilkatHOMEAndroid™Classic ASPCC++C#Mono C#.NET Core C#C# UWP/WinRTDataFlexDelphi ActiveXDelphi DLLVisual FoxProJavaLianjaMFCObjective-CPerlPHP ActiveXPHP ExtensionPowerBuilderPowerShellPureBasicCkPythonChilkat2-PythonRubySQL ServerSwift 2Swift 3/4TclUnicode CUnicode C++Visual Basic 6.0VB.NETVB.NET UWP/WinRTVBScriptXojo PluginNode.jsExcelGo

C# UWP/WinRT Web API Examples

Primary Categories

AWS Translate
Azure Maps
Azure OAuth2
Azure Storage Accounts
Microsoft Calendar
Microsoft Group
Microsoft Tasks and Plans





(C# UWP/WinRT) Get Ebay OAuth2 in a Desktop App

Demonstrates how to get a Ebay OAuth2 access token from a desktop application or script.

Chilkat Universal Windows Platform (UWP) / WinRT Downloads

Chilkat for the Universal Windows Platform (UWP)

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

Chilkat.OAuth2 oauth2 = new Chilkat.OAuth2();
bool success;

// See the Ebay documentation about Access token types
// Also see the Ebay documentation about authorization code grant flow

// Ebay OAuth2 only allows for SSL/TLS with localhost redirect URLs (i.e. https://localhost:<portNumber>/)
// We want the access token to come back to your desktop app, but without TLS (the redirect from your local browser to 
// your application does not traverse a network (both are on localhost), and therefore no TLS is necessary).
// To get around the https problem, you'll need to script
// on your web server to respond with it's own redirect.  Think of it this way:  If Ebay won't redirect to http://localhost:<portNumber>,
// then just setup a web server script that will send a redirect response to http://localhost:<portNumber>

// This script can be written in C#, PHP, or whatever desired.  It must include the query string in the redirection.
// For example, in PHP your script would look like this:

// <?php
//   header( 'Location: http://localhost:3017?' . $_SERVER['QUERY_STRING'] );
// ?>

// Ebay is odd in that it wants the redirect URL indirectly.
// You need to provide the RuName (eBay Redirect URL name)
oauth2.AppCallbackUrl = "Chilkat_Softwar-ChilkatS-chilka-qydjs";
oauth2.ListenPort = 3017;

oauth2.AuthorizationEndpoint = "";
oauth2.TokenEndpoint = "";

// Replace these with actual values.
oauth2.ClientId = "EBAY_CLIENT_ID";
oauth2.ClientSecret = "EBAY_CLIENT_SECRET";
oauth2.UseBasicAuth = true;
oauth2.CodeChallenge = false;

// The scope query param indicates the access to be provided by the token.
// Multiple scopes can be specified by separating each with a SPACE char.
// See the Ebay OAuth scopes documentation

oauth2.Scope = "";

// Begin the OAuth2 three-legged flow.  This returns a URL that should be loaded in a browser.
string url = oauth2.StartAuth();
if (oauth2.LastMethodSuccess != true) {

Debug.WriteLine("url = " + url);

// At this point, your application should load the URL in a browser.
// For example, 
// in C#: System.Diagnostics.Process.Start(url);
// in Java: Desktop.getDesktop().browse(new URI(url));
// in VBScript: Set wsh=WScript.CreateObject("WScript.Shell")
//              wsh.Run url
// The Ebay account owner would interactively accept or deny the authorization request.

// Add the code to load the url in a web browser here...
// Add the code to load the url in a web browser here...
// Add the code to load the url in a web browser here...

// Now wait for the authorization.
// We'll wait for a max of 60 seconds.
int numMsWaited = 0;
while ((numMsWaited < 60000) && (oauth2.AuthFlowState < 3)) {
    numMsWaited = numMsWaited + 100;

// If there was no response from the browser within 60 seconds, then 
// the AuthFlowState will be equal to 1 or 2.
// 1: Waiting for Redirect. The OAuth2 background thread is waiting to receive the redirect HTTP request from the browser.
// 2: Waiting for Final Response. The OAuth2 background thread is waiting for the final access token response.
// In that case, cancel the background task started in the call to StartAuth.
if (oauth2.AuthFlowState < 3) {
    Debug.WriteLine("No response from the browser!");

// Check the AuthFlowState to see if authorization was granted, denied, or if some error occurred
// The possible AuthFlowState values are:
// 3: Completed with Success. The OAuth2 flow has completed, the background thread exited, and the successful JSON response is available in AccessTokenResponse property.
// 4: Completed with Access Denied. The OAuth2 flow has completed, the background thread exited, and the error JSON is available in AccessTokenResponse property.
// 5: Failed Prior to Completion. The OAuth2 flow failed to complete, the background thread exited, and the error information is available in the FailureInfo property.
if (oauth2.AuthFlowState == 5) {
    Debug.WriteLine("OAuth2 failed to complete.");

if (oauth2.AuthFlowState == 4) {
    Debug.WriteLine("OAuth2 authorization was denied.");

if (oauth2.AuthFlowState != 3) {
    Debug.WriteLine("Unexpected AuthFlowState:" + Convert.ToString(oauth2.AuthFlowState));

// Save the full JSON access token response to a file.
Chilkat.StringBuilder sbJson = new Chilkat.StringBuilder();

// The full JSON received looks like this:
// {
//   "access_token": "v^1.1#i^1#p^3#f^0#I^3#r^0#t^H4sIAAA... 3+fBIAAA==",
//   "expires_in": 7200,
//   "refresh_token": "v^1.1#i^1#f^0#p^3#r^1#I^3#t^Ul4xMF8wOkIxQzAzQjg1ND ... fMSNFXjEyODQ=",
//   "refresh_token_expires_in": 47304000,
//   "token_type": "User Access Token"
// }

Debug.WriteLine("OAuth2 authorization granted!");
Debug.WriteLine("Access Token = " + oauth2.AccessToken);


© 2000-2019 Chilkat Software, Inc. All Rights Reserved.