83 lines
2.8 KiB
Java
83 lines
2.8 KiB
Java
/*
|
|
* Copyright (c) 2015-present, Parse, LLC.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
package com.parse;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
import java.util.UUID;
|
|
|
|
import bolts.Continuation;
|
|
import bolts.Task;
|
|
|
|
/**
|
|
* Provides utility functions for working with Anonymously logged-in users. Anonymous users have
|
|
* some unique characteristics:
|
|
* <ul>
|
|
* <li>Anonymous users don't need a user name or password.</li>
|
|
* <li>Once logged out, an anonymous user cannot be recovered.</li>
|
|
* <li>When the current user is anonymous, the following methods can be used to switch to a
|
|
* different user or convert the anonymous user into a regular one:
|
|
* <ul>
|
|
* <li>signUp converts an anonymous user to a standard user with the given username and password.
|
|
* Data associated with the anonymous user is retained.</li>
|
|
* <li>logIn switches users without converting the anonymous user. Data associated with the
|
|
* anonymous user will be lost.</li>
|
|
* <li>Service logIn (e.g. Facebook, Twitter) will attempt to convert the anonymous user into a
|
|
* standard user by linking it to the service. If a user already exists that is linked to the
|
|
* service, it will instead switch to the existing user.</li>
|
|
* <li>Service linking (e.g. Facebook, Twitter) will convert the anonymous user into a standard user
|
|
* by linking it to the service.</li>
|
|
* </ul>
|
|
* </ul>
|
|
*/
|
|
public final class ParseAnonymousUtils {
|
|
/* package */ static final String AUTH_TYPE = "anonymous";
|
|
|
|
/**
|
|
* Whether the user is logged in anonymously.
|
|
*
|
|
* @param user
|
|
* User to check for anonymity. The user must be logged in on this device.
|
|
* @return True if the user is anonymous. False if the user is not the current user or is not
|
|
* anonymous.
|
|
*/
|
|
public static boolean isLinked(ParseUser user) {
|
|
return user.isLinked(AUTH_TYPE);
|
|
}
|
|
|
|
/**
|
|
* Creates an anonymous user in the background.
|
|
*
|
|
* @return A Task that will be resolved when logging in is completed.
|
|
*/
|
|
public static Task<ParseUser> logInInBackground() {
|
|
return ParseUser.logInWithInBackground(AUTH_TYPE, getAuthData());
|
|
}
|
|
|
|
/**
|
|
* Creates an anonymous user in the background.
|
|
*
|
|
* @param callback
|
|
* The callback to execute when anonymous user creation is complete.
|
|
*/
|
|
public static void logIn(LogInCallback callback) {
|
|
ParseTaskUtils.callbackOnMainThreadAsync(logInInBackground(), callback);
|
|
}
|
|
|
|
/* package */ static Map<String, String> getAuthData() {
|
|
Map<String, String> authData = new HashMap<>();
|
|
authData.put("id", UUID.randomUUID().toString());
|
|
return authData;
|
|
}
|
|
|
|
private ParseAnonymousUtils() {
|
|
// do nothing
|
|
}
|
|
}
|