2017-06-28 1 views
-1

J'ai eu un code qui ya travaillé sans éclairage quelques jours: c'est un code d'activité xamarin.androidauthentification avec Xamarin. Android et Microsoft.Azure.Mobile.Client Erreur de fournisseur Microsoft

[Activity(Label = "AuthSample", MainLauncher = true, Icon = "@drawable/icon")] 
public class MainActivity : Activity 
{ 
    Button login; 
    //Mobile Service Client reference 
    private MobileServiceClient client; 

    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     // Create the Mobile Service Client instance, using the provided 
     // Mobile Service URL and key 
     client = new MobileServiceClient("https://XXXXXXX.azurewebsites.net"); 

     // Set our view from the "main" layout resource 
     SetContentView (Resource.Layout.Main); 
     login = FindViewById<Button>(Resource.Id.buttonLoginUser); 
     login.Click += onLoginClick; 

    } 

    private async void onLoginClick(object sender, EventArgs e) 
    { 
     // Load data only after authentication succeeds. 
     if (await Authenticate()) 
     { 

     } 
    } 

    // Define a authenticated user. 
    private MobileServiceUser user; 
    private async Task<bool> Authenticate() 
    { 
     var success = false; 
     try 
     { 
      // Sign in with Microsoft login using a server-managed flow. 
      user = await client.LoginAsync(this, 
       MobileServiceAuthenticationProvider.MicrosoftAccount); 
      CreateAndShowDialog(string.Format("you are now logged in - {0}", 
       user.UserId), "Logged in!"); 

      success = true; 
     } 
     catch (Exception ex) 
     { 
      CreateAndShowDialog(ex, "Authentication failed"); 
     } 
     return success; 
    } 


    private void CreateAndShowDialog(Exception exception, String title) 
    { 
     CreateAndShowDialog(exception.Message, title); 
    } 

    private void CreateAndShowDialog(string message, string title) 
    { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 

     builder.SetMessage(message); 
     builder.SetTitle(title); 
     builder.Create().Show(); 
    } 
} 

je l'ai fait toutes les instructions dans le tutorial. Le LoginAsync me rediriger vers la page de connexion Microsoft, je suis capable de m'authentifier et après une authentification réussie j'obtiens cette erreur: "la page ne peut pas être montrée parce qu'une erreur de serveur interne s'est produite"

je travaille avec 3.1 azure sdk version

+0

Quel est le backend de votre application mobile, Node.js ou C#? Je vous recommande d'accéder à https: // {votre-nom-d'application} .azurewebsites.net/.auth/login/microsoftaccount' via votre navigateur pour isoler ce problème. Ou si votre application a permis de restreindre les autorisations aux utilisateurs authentifiés, vous pouvez fournir le nom de votre application, puis je vérifierai avec elle pour une erreur plus détaillée. –

+0

mon backend est web api C#. J'ai essayé d'accéder à l'URL avec le nom de l'application: https: // {votre-app-nom} .azurewebsites.net/auth/login/microsoftaccount/callback et avait une erreur "La page ne peut pas être affichée parce qu'une erreur interne du serveur a eu lieu." – royi

Répondre

0

Selon votre description, j'ai supposé que vous pouviez suivre les étapes ci-dessous pour résoudre ce problème.

Pour backend Node.js

Vous pouvez tirer parti App Service Editor ou kudu pour créer le fichier iisnode.yml sous le dossier racine (D: \ home \ emplacement \ wwwroot) si existe pas. Ensuite, ajoutez les paramètres suivants pour enable logging to debug a Node.js web app in azure app service:

loggingEnabled: true 
logDirectory: iisnode 

De plus, voici une issue similaire sur l'enregistrement permettra Node.js, vous pouvez y faire référence. En outre, pour plus de détails sur kudu et éditeur de service d'application, vous pouvez vous référer à here.

Pour C# backend

vous pouvez modifier le fichier App_Start\Startup.MobileApp.cs et configurer le IncludeErrorDetailPolicy comme suit pour capturer les détails d'erreur:

HttpConfiguration config = new HttpConfiguration(); 
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always; 

Pour un moyen simple, vous pouvez accéder https://{your-app-name}.azurewebsites.net/.auth/login/{provider-name} via le navigateur, puis vérifiez le message d'erreur détaillé pour localiser l'erreur spécifique.

MISE À JOUR:

En fonction de votre adresse, j'ai vérifié votre application et trouvé que je pouvais connecter avec mon compte Microsoft via le navigateur. Ensuite, j'ai vérifié avec votre point final de la table et a trouvé l'erreur suivante:

https://{your-app-name}.azurewebsites.net/tables/todoitem?ZUMO-API-VERSION=2.0.0 

message: "An error has occurred.", exceptionMessage: "A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 52 - Unable to locate a Local Database Runtime installation. Verify that SQL Server Express is properly installed and that the Local Database Runtime feature is enabled.)", exceptionType: "System.Data.SqlClient.SqlException",

Comme je l'ai connu, en suivant le démarrage rapide pour créer la banque de données pour votre back-end, télécharger le backend C#, Déployez ensuite le backend application moible. À ce stade, votre chaîne de connexion créée via le portail Azur ne sera pas exposée à votre application ASP.NET et la chaîne de connexion par défaut utilisera la commande localdb. Vous devez modifier le fichier Web.config avant de le déployer dans l'application mobile Azur comme suit:

<connectionStrings> 
    <add name="MS_TableConnectionString" connectionString="Data Source=tcp:{your-sqlserver-name}.database.windows.net,1433;Initial Catalog={db-name};User ID={user-id};Password={password}" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

ou configurer la chaîne de connexion lors de déployer votre application mobile via azur application VS comme suit:

enter image description here

+0

a ajouté le 'HttpConfiguration config = new HttpConfiguration(); config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always; ' mais toujours la même erreur" La page ne peut pas être affichée car une erreur interne du serveur s'est produite. " – royi

+0

Je viens de suivre le tutoriel sur [Comment configurer votre application App Service pour utiliser la connexion au compte Microsoft] (https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile- how-to-configure-microsoft-authentication), alors j'ai pu accéder à 'https: // brucechen-mobile.azurewebsites.net/.auth/login/microsoftaccount' et m'enregistrer avec succès. Basé sur la description connue, je n'ai pas pu trouver ce problème. –

+0

J'ai supposé que vous pouviez définir "Action à prendre lorsque la requête est authentifiée" sur "Connexion avec Microsoft Account" sur "PARAMETRAGE> Authentification/Autorisation" de votre application mobile, puis indiquez le nom de votre application. question de mon côté. –

0

Il semble qu'il y avait un problème d'azur ou dans l'authentification Microsoft. après deux jours de frustration tout a recommencé à fonctionner !!

+0

L'authentification pour votre application mobile est correcte, mais j'ai trouvé que la table api ne pouvait pas fonctionner comme prévu. Pourriez-vous accéder 'https: //testauth123.azurewebsites.net/tables/todoitem? ZUMO-API-VERSION = 2.0.0' via votre navigateur? –