2017-06-18 14 views
0

Deshalb mag ich eine Twitter-Login in meine Xamarin App implementieren, aber wenn ich das Tutorial folgen, die Portable App wird mich diese Funktion nicht tun lassen:Erstellen plattformspezifischen Code in Xamarin?

var ui = auth.GetUI(this); 

wenn Auth ist dies:

var auth = new OAuth1Authenticator(
    "DynVhdIjJDXXXXXXXXXXXXX", 
    "REvU5dCUQI4MvjV6aWwXXXXXXXXXXXXXXXXXXXXXXX", 
    new Uri("https://api.twitter.com/oauth/request_token"), 
    new Uri("https://api.twitter.com/oauth/authorize"), 
    new Uri("https://api.twitter.com/oauth/access_token"), 
    new Uri("http://twitter.com")); 

Also ich muss es in das Android-Projekt hinzufügen, aber wie zeige ich die Schaltfläche von dort?

Danke für jede Hilfe! :)

+0

Verwenden Sie den RestSharp OAuth1Authenticator? –

+0

Die portable App kann den UI-Code nicht verarbeiten. Sie müssen eine Schnittstelle in Ihrem portablen Klassenprojekt und eine Implementierungsklasse in Ihrem Android-Projekt – hugoterelle

+0

@MalteGoetz ja verwenden –

Antwort

0

Based auf OAuth1Authenticator und GetUI() Ich nehme an, Sie verwenden Xamarin.Auth.

Xamarin.Auth unterstützt Xamarin.Forms mit 2 Implementierungen für GetUI(), so genannte Presenter (eigentlich Dependency Service/Injection) und CustomRenderers. Presenter sind mehr getestet (also mehr Beweise für Stabilität), aber Sie können den Code im Repo überprüfen.

Proben wie Xamarin.Auth mit dem Xamarin.Forms verwenden:

https://github.com/moljac/Xamarin.Auth.Samples.NugetReferences/tree/master/Xamarin.Forms/Evolve16Labs

HINWEIS: diese Repo-Proben aus dem Haupt Xamarin.Auth Repo extrahierte enthält, so ist die Handhabung einfacher und Proben aktualisiert werden öfters.

0

Erstellen plattformspezifischen Code in Xamarin?

können Sie DependencyService verwenden diese Funktion zu implementieren. Hier ist die document und example. In dem Dokument wird Folgendes erläutert:

Mit DependencyService können Apps aus gemeinsam genutztem Code plattformspezifische Funktionen aufrufen. Diese Funktionalität ermöglicht es Xamarin.Forms-Apps, alles zu tun, was eine native App kann.

erstellen ILogin Schnittstelle in PCL:

public interface ILogin 
{ 
    void GetUI(); 
} 

die Schnittstelle in Xamarin.Android implementieren:

[assembly: Xamarin.Forms.Dependency(typeof(TwitterLogin))] 
namespace TwitterDemo.Droid 
{ 
    public class TwitterLogin : ILogin 
    { 

    public TwitterLogin() 
    { 
    } 

    public void GetUI() 
    { 
     var auth = new OAuth1Authenticator("DynVhdIjJDXXXXXXXXXXXXX", "REvU5dCUQI4MvjV6aWwXXXXXXXXXXXXXXXXXXXXXXX", 
      new Uri("https://api.twitter.com/oauth/request_token"), 
      new Uri("https://api.twitter.com/oauth/authorize"), 
      new Uri("https://api.twitter.com/oauth/access_token"), 
      new Uri("http://twitter.com")); 

     Intent intent = auth.GetUI(Android.App.Application.Context); 

     Forms.Context.StartActivity(intent); 
    } 

    } 
} 

es in Xamarin.Forms Verwendung:

private void Button_Clicked(object sender, EventArgs e) 
{ 
     Xamarin.Forms.DependencyService.Register<ILogin>(); 
     DependencyService.Get<ILogin>().GetUI(); 
} 
Verwandte Themen