2017-09-12 3 views
0

Je souhaite intégrer xero à l'application de service C# windows. Je n'ai pas trouvé d'extrait de code simple pour connecter xero avec C#. Je ne veux aucune interaction de l'utilisateur tout en autorisant l'utilisateur avec xero. J'ai trouvé le code ci-dessous, mais il me redirige vers la page de connexion xero pour s'authentifier, puis génère le code de vérification, comment puis-je éviter cela et aller de l'avant car dans Windows Service je n'aurai pas d'interface pour entrer le code de vérification.Intégration Xero Public Application avec C#

using System; 
using System.Linq; 
using System.Windows.Forms; 
using Xero.Api.Core; 
using Xero.Api.Example.Applications.Public; 
using Xero.Api.Example.TokenStores; 
using Xero.Api.Infrastructure.OAuth; 
using Xero.Api.Serialization; 


namespace XeroIntegrationTest 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      ConnectXero(); 
     } 

     public void ConnectXero() 
     { 
      try 
      { 
       // Public Application Sample 
       var user = new ApiUser { Name = Environment.MachineName }; 
       string consumerKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 
       string consumerSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 

       var public_app_api = new XeroCoreApi("https://api.xero.com/api.xro/2.0/", new PublicAuthenticator("https://api.xero.com/api.xro/2.0/", "https://api.xero.com/oauth/RequestToken", "oob", 
        new MemoryTokenStore()), 
        new Consumer(consumerKey, consumerSecret), user, 
        new DefaultMapper(), new DefaultMapper()); 


       var public_contacts = public_app_api.Contacts.Find().ToList(); 

      } catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message + ex.StackTrace); 
      } 
     } 
    } 
} 

Mais il génère oauth_problem = PERMISSION_DENIED & oauth_problem_advice = Le% 20consumer% 20was% 20denied% 20access% 20to% 20Ce% 20resource

erreur

.

J'espère que quelqu'un m'aidera.

Répondre

0

Vous devez utiliser la méthode "PrivateAuthenticator". La méthode que vous utilisez est publique et utilise un processus d'authentification différent qui ne convient pas à un service Windows.

Pour ce faire:

  1. Visitez le Xero developer portal
  2. Aller à la rubrique "Mes Apps" section
  3. Sélectionnez "Ajouter une application"
  4. Sélectionnez "Private" dans les options de bouton radio (ce est important)
  5. Générer une combinaison de clé privée/publique (google comment faire)
  6. Suivez les exemples de code dans le readme pour configurer une connexion à l'aide de la méthode PrivateAuthenticator
1

Vous devez intégrer la méthode "privateKeyAuthendicator".

Pour ce faire:

1.Créez privée/clé publique en utilisant le lien ci-dessous

https://developer.xero.com/documentation/api-guides/create-publicprivate-key

2.Créez ConsumerKey et ConsumerSecret

3.Include fichier clé dans votre dossier de projet

4.Utilisez ci-dessous l'extrait de code pour accéder à Xero

var private_app_api = new XeroCoreApi(_xeroSettings.Value.Url, new PrivateAuthenticator(privatekeyFilePath, privatekeypassword), 
       new Consumer(consumerKey,consumerSecret), null, 
       new DefaultMapper(), new DefaultMapper());