Todos os produtos
Search
Central de documentação

Drive and Photo Service:Acesso OAuth 2.0 para aplicativos móveis e de desktop

Última atualização: Sep 12, 2026

Nota

Este tópico descreve como aplicativos móveis e de desktop acessam o Photo and Drive Service (PDS) usando OAuth 2.0.

1. Visão geral

Aplicativos móveis e de desktop são aplicações nativas. Não é seguro armazenar informações confidenciais, como AppSecrets, nesses aplicativos.

Um aplicativo móvel para Android ou iOS pode acionar um aplicativo de autorização por meio de um URL scheme.

Um aplicativo de desktop para macOS, Linux ou Windows pode acionar a aplicação de autorização usando um endereço IP de loopback ou um URL scheme.

Alternativamente, sua aplicação pode usar WebView para enviar uma solicitação de autorização a um aplicativo web.

(1) Funcionamento

Fluxo de código de autorização: O processo é semelhante ao fluxo de código de autorização usado na integração de aplicativos de service web. A diferença é que a etapa de obtenção do token não exige o parâmetro secret, pois não há lado do servidor e o segredo não pode ser armazenado no cliente.

(2) Fluxograma

image

2. Preparação

(1) Crie um domínio

Primeiro, crie um domínio https://pds.console.alibabacloud.com no console oficial do PDS. Após a criação, o sistema fornecerá um nome de domínio de API de terceiro nível no formato https://{domainId}.api.aliyunpds.com.

(2) Ative a autenticação de usuário

O PDS oferece diversos métodos comuns de autenticação de usuário. Acesse diretamente o console do PDS para ativar a integração. Para mais detalhes, consulte Account access.

(3) Crie um aplicativo para usar como cliente OAuth no console do PDS

Crie um aplicativo nativo e especifique os escopos da aplicação. Esses escopos serão exibidos na página de consentimento. Depois de criar o aplicativo, obtenha o AppId e o AppSecret correspondentes. Eles funcionam como ClientId e ClientSecret para a autorização OAuth. Mantenha o ClientSecret em segurança.

(4) Planeje um URI de redirecionamento

Use um URL scheme personalizado aplicável a aplicativos Android ou iOS

Registre um URL scheme para identificar exclusivamente o aplicativo. O esquema segue este formato: <scheme domain>://<path>?<params>=<value>.

Utilize um endereço IP de loopback personalizado para aplicativos de desktop

Inicie um service web local para escutar em uma porta específica. Exemplo: http://127.0.0.1:3000/callback ou http://[::1]:3000.

3. Obtenha um token de acesso OAuth 2.0

(1) Chame a operação Authorize

Sintaxe da solicitação de API:

GET /v2/oauth/authorize?client_id=<appId>&redirect_uri=<redirect_uri>&scope=<scope>&login_type=<login_type>&state=[state]&prompt=[prompt] HTTP/1.1
Host: {domainId}.api.aliyunpds.com

Parâmetro

Obrigatório

Descrição

client_id

Sim

O AppId do seu aplicativo. Caso ainda não possua um AppId, crie um aplicativo no console do PDS para obtê-lo.

redirect_uri

Sim

URI de redirecionamento: Indica ao service de autenticação para onde redirecionar após a conclusão do fluxo de autorização. Geralmente, trata-se de um URL scheme personalizado ou de um endereço IP de loopback fornecido pelo aplicativo cliente. Por exemplo: pdshz001://callback/. Ao finalizar a autorização, o service de autenticação redireciona para esse endereço e inclui um código de uso único: pdshz001://callback/?code=xxxx. Em seguida, use esse código para concluir o fluxo subsequente. Observação: Este redirect_uri deve corresponder exatamente ao redirect_uri informado durante a criação do aplicativo.

scope

Sim

A lista de escopos descreve as permissões de acesso necessárias para o aplicativo de service web e será exibida na página de consentimento do usuário. Consulte: Scopes.

response_type

Sim

Valor fixo como "code" neste contexto.

state

Não, mas recomendado

Se você especificar este parâmetro, o servidor de autorização do PDS retornará o valor intacto no URI de redirecionamento para evitar ataques de replay. Exemplo: pdshz001://callback/?code=xxxx&state=abc.

login_type

Sim

Opções de login. Valores opcionais: ['default','phone','ding','ldap','wx','ram']. default indica a página de login padrão (que inclui login por número de telefone e outros links de acesso), phone representa o login por número de telefone, ding refere-se ao login via QR code do DingTalk, ldap corresponde ao login de domínio LDAP/AD, wx sinaliza o login pelo WeCom e ram designa o login de subconta RAM da Alibaba Cloud.

hide_consent

Não

Defina se a página de consentimento deve aparecer após o primeiro login do usuário. Valores opcionais: true, false. Se definido como true, a página de consentimento não é exibida e o fluxo avança diretamente.

lang

Não

Idioma exibido na interface do usuário. Atualmente suportados: zh_CN, en_US. Padrão: zh_CN.

Após o envio dessa solicitação, o service de autenticação do PDS orientará o usuário a fazer login. Depois que o usuário entrar, caso seja o primeiro acesso e o parâmetro hide_consent=true não tenha sido enviado, ele será redirecionado para a página de consentimento; caso contrário, o redirecionamento ocorre diretamente para o redirect_uri informado nos parâmetros da solicitação, por exemplo: pdshz001://callback/?code=xxxx&state=abc.

(2) Conceda permissões ao aplicativo na página de consentimento

Nesta etapa, o usuário decide se concede autorização ao aplicativo de service web. Se a autorização for negada, o fluxo é encerrado. Ao conceder a autorização, o sistema redireciona o usuário para o redirect_uri especificado na solicitação inicial, por exemplo: pdshz001://callback/?code=xxxx&state=abc.

(3) Troque o código de autorização por um token de acesso

Depois de obter o código de autorização, chame a operação Token para trocá-lo por um token de acesso.

Sintaxe da solicitação de API:

POST /v2/oauth/token HTTP/1.1
Host: {domainId}.api.aliyunpds.com
Content-Type: application/x-www-form-urlencoded

code=xxx\
&client_id=your_app_id\
&redirect_uri=pdshz001://callback\
&grant_type=authorization_code

Parâmetro

Obrigatório

Descrição

code

Sim

Código de autorização de uso único.

client_id

Sim

AppId

redirect_uri

Sim

URI de redirecionamento configurado para o seu aplicativo.

grant_type

Sim

Defina o valor como authorization_code conforme as especificações OAuth 2.0.

Resposta:

Parâmetro

Localização

Tipo

Obrigatório

Descrição

access_token

body

String

Sim

O access_token gerado, válido por 2 horas.

expires_time

body

String

Sim

Horário de expiração do access_token.

expire_in

body

string

Sim

Período de validade do access_token, em segundos.

token_type

body

String

Sim

O valor é Bearer.

Exemplo de resposta de sucesso:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "access_token":"Aiasd76Y****...LSdyssd2",
  "expires_time":"2019-11-11T10:10:10.009Z",
  "expire_in": 7200,
  "token_type":"Bearer",
  "refresh_token":"LSLKdklksd...li3ew6"
}
Nota

A resposta desta solicitação segue a mesma estrutura da troca de código de autorização por token de acesso, mas não inclui o refresh_token.

Nota

Ignore os parâmetros opcionais presentes na resposta.

4. Chame operações da API do PDS

Use o token de acesso para chamar operações da API do PDS. Inclua o token de acesso no cabeçalho Authorization das solicitações de API.

Para mais detalhes sobre como realizar as chamadas, consulte Calling methods.

5. Atualize o token de acesso

(1) Sintaxe da solicitação de API

POST /v2/oauth/token HTTP/1.1
Host: {domainId}.api.aliyunpds.com
Content-Type: application/x-www-form-urlencoded

refresh_token=xxx\
&client_id=xxx\
&grant_type=refresh_token

Parâmetros da solicitação

Parâmetro

Obrigatório

Descrição

refresh_token

Sim

Token de atualização retornado durante a troca do código de autorização pelo token de acesso.

client_id

Sim

AppId do seu aplicativo.

grant_type

Sim

Defina o valor como refresh_token seguindo as especificações OAuth 2.0.

client_secret

Não

AppSecret do seu aplicativo. Utilizado para autenticar a aplicação.

(2) Resposta

HTTP/1.1 200 OK
Content-Type: application/json

{
  "access_token":"xxxxxxxxx",
  "expires_in":3920,
  "expire_time":"2019-11-11T10:10:10.009Z",
  "token_type":"Bearer"
}

Parâmetros da resposta

Mesma estrutura de resposta descrita em (3) Exchange the authorization code for an access token.