parse-community / Parse-SDK-dotNET

Parse SDK for .NET, Xamarin, Unity.
http://parseplatform.org
Apache License 2.0
322 stars 260 forks source link

[v2.0.0-develop-1][Xamarin] User SignUp #353

Open P0wmes opened 3 years ago

P0wmes commented 3 years ago

i was using parse sdk v2.0 in a Xamarin Forms Shared Project. I am trying to register a new user using Source: https://github.com/parse-community/Parse-SDK-dotNET/#basic-demonstration

Steps to reproduce

Create a Xamarin Forms Shared Project. Install-Package parse -Version 2.0.0-develop-1 Copy Paste Code:

// Instantiate a ParseClient. ParseClient client = new ParseClient(back4app_app_id,back4app_server_url, clientKey);

  var instal = client.Services.GetCurrentInstallation();
  // Create a user, save it, and authenticate with it.
  await client.SignUpAsync(username: "TestABC", password: "Test");

  // Get the authenticated user. This is can also be done with a variable that stores the ParseUser instance before the SignUp overload that accepts a ParseUser is called.
  var curUser=client.GetCurrentUser();

  // Deauthenticate the user.
  await client.LogOutAsync();

  // Authenticate the user.
  ParseUser user = client.LogInAsync(username: "Test", password: "Test").Result;

Actual Outcome

await client.SignUpAsync(username: "TestABC", password: "Test"); throws following exception: System.ArgumentNullException: 'Value cannot be null.Parameter name: element'

Expected Outcome

After SignUpAsync() Function client.GetCurrentUser() should return current User

Environment

Server

Client

thibautvdu commented 3 years ago

I'm facing the exact same error with the function CallCloudCodeFunctionAsync Xamarin Forms shared project too.

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

sschaub commented 3 years ago

I recently encountered this same issue. The problem and the solution is referenced in other issues here, such as #344. Namely, you have to follow the procedure in the README for the Unity client: https://github.com/parse-community/Parse-SDK-dotNET#use-in-unity-client

You have to adapt it a bit for Xamarin. Here is what I've used to get it working with Xamarin Forms 5:

var client = new ParseClient(new ServerConnectionData
            {
                ApplicationID = "...",
                Key = "...",
                ServerURI = "..."
            },
            new LateInitializedMutableServiceHub(),
            new MetadataMutator
            {
                EnvironmentData = new EnvironmentData { OSVersion = Environment.OSVersion.ToString(), Platform = Device.RuntimePlatform, TimeZone = TimeZoneInfo.Local.StandardName },
                HostManifestData = new HostManifestData {
                    Version = this.GetType().Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion,
                    Name = this.GetType().Assembly.GetName().Name,
                    ShortVersion = this.GetType().Assembly.GetName().Version.ToString(),
                    Identifier = AppDomain.CurrentDomain.FriendlyName
                }
            });
hhgz9527 commented 2 years ago

ServerURI need add / to last, such as http://localhost:1337/api/