---
schema_version: "1"
id: 55eb1378dbcc5d71f2ef158c5a669374bb55223b2689e54f1ec0357946fdc627
title: Manage an OAuth Named Credential
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/security/named-credentials/guides/nc-manage-oauth-cred.md
canonical_url: https://developer.salesforce.com/docs/platform/named-credentials/guide/nc-manage-oauth-cred.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: bc7c0f0678621a6d566819258c450fac56e8042bd229ded0ca9ec04be83870fd
products:
  - Named Credentials
  - Security
---
# Manage an OAuth Named Credential

Here are some examples of things that you can do with named and external credentials.

- Refresh a token
- Delete user external credentials
    <!-- These two examples were removed for 244 (Spring '23), but should be added back in for 246 (Winter '24). -->

<!--
- Change the label of an external credential
- Change the callout options of a named credential
-->

## Example: Refresh a Token

Here’s how to programmatically refresh a token.

```apex
String externalCredential = 'GitHubOAuth';
String principalName = 'Markdown Access';
ConnectApi.CredentialPrincipalType principalType = ConnectApi.CredentialPrincipalType.NamedPrincipal;

ConnectApi.CredentialInput credentialInput = new ConnectApi.CredentialInput();
credentialInput.externalCredential = externalCredential;
credentialInput.principalName = principalName;
credentialInput.principalType = principalType;
credentialInput.authenticationProtocol = ConnectApi.CredentialAuthenticationProtocol.OAuth;
credentialInput.credentials = new Map<String, ConnectApi.CredentialValueInput>();

ConnectApi.Credential refreshedCredential = ConnectApi.NamedCredentials.createCredential(credentialInput, ConnectApi.CreateCredentialAction.Refresh);
```

## Example: Delete User External Credentials

This method deletes the user external credentials, which store the encrypted access tokens used for named credential callouts. It doesn't delete the external credential itself. Apex can be used only to create a named credential, not edit or delete one.

```apex
ConnectApi.NamedCredentials.deleteCredential('GitHubOAuth', 'Markdown Access', principalType);
```

### See Also

- _Apex Reference Guide_: [deleteCredential](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_ConnectAPI_NamedCredentials_static_methods.htm#apex_ConnectAPI_NamedCredentials_deleteCredential_1)
- _Blog_: [Understanding Named Credentials](https://unofficialsf.com/understanding-named-credentials/)

<!-- These two examples were removed for 244 (Spring '23), but should be added back in for 246 (Winter '24) -->
<!--
## Example: Change the Label of an External Credential

```apex
ConnectApi.ExternalCredentialInput externalCredentialInput = new ConnectApi.ExternalCredentialInput();

externalCredentialInput.developerName = 'GitHubOAuth';
externalCredentialInput.masterLabel = 'GitHub OAuth New Label';
externalCredentialInput.authenticationProtocol = ConnectApi.CredentialAuthenticationProtocol.OAuth;

externalCredentialInput.principals = new List<ConnectApi.ExternalCredentialPrincipalInput>();
externalCredentialInput.parameters = new List<ConnectApi.ExternalCredentialParameterInput>();

ConnectApi.ExternalCredentialParameterInput authProviderParam = new ConnectApi.ExternalCredentialParameterInput();
authProviderParam.parameterName = 'GitHubProvider';
authProviderParam.parameterType = ConnectApi.ExternalCredentialParameterType.AuthProvider;
authProviderParam.parameterValue = 'GitHubProvider';

externalCredentialInput.parameters.add(authProviderParam);

ConnectApi.ExternalCredentialPrincipalInput principalOne = new ConnectApi.ExternalCredentialPrincipalInput();
principalOne.principalName = 'Developer Access';
principalOne.principalType = ConnectApi.CredentialPrincipalType.PerUserPrincipal;
principalOne.sequenceNumber = 1;
principalOne.parameters = new List<ConnectApi.ExternalCredentialParameterInput>();

ConnectApi.ExternalCredentialParameterInput scopeParam = new ConnectApi.ExternalCredentialParameterInput();
scopeParam.parameterName = 'Scope';
scopeParam.parameterType = ConnectApi.ExternalCredentialParameterType.AuthParameter;
scopeParam.parameterValue = 'gist';

principalOne.parameters.add(scopeParam);

ConnectApi.ExternalCredentialPrincipalInput principalTwo = new ConnectApi.ExternalCredentialPrincipalInput();
principalTwo.principalName = 'Markdown Access';
principalTwo.principalType = ConnectApi.CredentialPrincipalType.NamedPrincipal;
principalTwo.sequenceNumber = 2;

externalCredentialInput.principals.add(principalOne);
externalCredentialInput.principals.add(principalTwo);

ConnectApi.ExternalCredential updatedExternalCredential = ConnectApi.NamedCredentials.updateExternalCredential('GitHubOAuth', externalCredentialInput);
```

## Example: Change Callout Options for a Named Credential

```apex
ConnectApi.NamedCredentialInput namedCredentialInput = new ConnectApi.NamedCredentialInput();

namedCredentialInput.developerName = 'githubAPI';
namedCredentialInput.masterLabel = 'GitHub API Update Label';
namedCredentialInput.type = ConnectApi.NamedCredentialType.SecuredEndpoint;
namedCredentialInput.calloutUrl = 'https://api.github.com';

namedCredentialInput.externalCredentials = new List<ConnectApi.ExternalCredentialInput>();
ConnectApi.ExternalCredentialInput externalCredential = new ConnectApi.ExternalCredentialInput();
externalCredential.developerName = 'GitHubOAuth';
namedCredentialInput.externalCredentials.add(externalCredential);

ConnectApi.NamedCredentialCalloutOptionsInput calloutOptions = new ConnectApi.NamedCredentialCalloutOptionsInput();
calloutOptions.allowMergeFieldsInBody = true;
calloutOptions.allowMergeFieldsInHeader = true;
calloutOptions.generateAuthorizationHeader = true;
namedCredentialInput.calloutOptions = calloutOptions;

ConnectApi.NamedCredential createdNamedCredential = ConnectApi.NamedCredentials.updateNamedCredential('githubAPI', namedCredentialInput);
```
-->
