Google管理员SDK API:未授权访问此资源/ api

时间:2017-05-27 17:00:12

标签: java google-api google-apps google-admin-sdk google-directory-api

我想从google Directory API中删除用户。我在删除时收到错误

  

com.google.api.client.googleapis.json.GoogleJsonResponseException:403禁止“未授权访问此资源/ api”。

但是插入用户时我的代码工作正常。我有超级管理员帐户,我使用相同的目录实例来插入和删除用户。当我试图删除用户时,它确实有效。

请帮帮我。提前谢谢。

public class UserDisable {

private static final Logger LOGGER = Logger.getLogger(EmployeeAPI.class);

/** Application name. */
private static final String APPLICATION_NAME = "User Account Creation";

/** Directory to store user credentials for this application. */
private static final java.io.File DATA_STORE_DIR = new java.io.File(
        System.getProperty("user.home"),
        ".credentials/admin-directory_v1-java-quickstart");

/** Global instance of the {@link FileDataStoreFactory}. */
private static FileDataStoreFactory DATA_STORE_FACTORY;

/** Global instance of the JSON factory. */
private static final JsonFactory JSON_FACTORY = JacksonFactory
        .getDefaultInstance();

/** Global instance of the HTTP transport. */
private static HttpTransport HTTP_TRANSPORT;

private static final Random randomGenerator = new Random();

static Directory directoryClient = null;

private static final List<String> SCOPES = Arrays.asList(
        DirectoryScopes.ADMIN_DIRECTORY_USER, DirectoryScopes.ADMIN_DIRECTORY_GROUP);

static {
    try {
        HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
        DATA_STORE_FACTORY = new FileDataStoreFactory(DATA_STORE_DIR);
    } catch (Throwable t) {
        System.exit(1);
    }
}

/**
 * Creates an authorized Credential object.
 * 
 * @return an authorized Credential object.
 * @throws IOException
 */
public static Credential authorize() throws IOException {
    // Load client secrets.
    InputStream in = UserDisable.class
            .getResourceAsStream("/client_secret.json");
    GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(
            JSON_FACTORY, new InputStreamReader(in));

    // Build flow and trigger user authorization request.
    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
            HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
            .setDataStoreFactory(DATA_STORE_FACTORY)
            .setAccessType("offline").build();
    Credential credential = new AuthorizationCodeInstalledApp(flow,
            new LocalServerReceiver()).authorize("user");
    LOGGER.info("Credentials saved to "
            + DATA_STORE_DIR.getAbsolutePath());
    return credential;
}

/**
 * Build and return an authorized Admin SDK Directory client service.
 * 
 * @return an authorized Directory client service
 * @throws IOException
 */
public static Directory getDirectoryService() throws IOException {
    Credential credential = authorize();
    return new Directory.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
            .setApplicationName(APPLICATION_NAME).build();
}

public static void demo(){
    try {
        directoryClient = getDirectoryService();
        removeUser(directoryClient, "Anderson.Paul2@abc.com");
    } catch (IOException e) {
        e.printStackTrace();
    }

}

 /**
 * removeGroup removes a group from Google.
 * @param directoryClient a Directory (service) object
 * @param userKey an identifier for a user (e-mail address is the most popular)
 * @throws IOException
 */
public static void removeUser(Directory directoryClient, String userKey) throws IOException {
    LOGGER.info("removeUser() - {}"+ userKey);

    try {
        directoryClient.users().delete(userKey).execute();
    } catch (IOException e) {
        LOGGER.info("An unknown error occurred: " + e);
    }
}

}

这是我收到的错误:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{

  "code" : 403,

  "errors" : [ { 

    "domain" : "global",

    "message" : "Not Authorized to access this resource/api",

    "reason" : "forbidden"

  } 
],

  "message" : "Not Authorized to access this resource/api"

}

0 个答案:

没有答案