Qual é o mais seguro e por quê?
Ambos são seguros, depende do ambiente em que você está usando.
Não vejo uma razão pela qual uma etapa extra (código de autorização de troca de token) seja adicionada em um fluxo de trabalho quando o servidor puder emitir diretamente um token do Access.
É simples Seu cliente não é seguro. Vamos ver em detalhes.
Considere que você está desenvolvendo um aplicativo Instagram APIe registre seu aplicativo Instagrame defina o que API'sprecisa. Instagramirá fornecer client_ideclient_secrect
No seu site, você configura um link que diz. "Venha usar meu aplicativo". Ao clicar nele, seu aplicativo da web deve fazer duas chamadas Instagram API.
Firstenvie uma solicitação para Instagram Authentication Servercom os parâmetros abaixo.
1. `response_type` with the value `code`
2. `client_id` you have get from `Instagram`
3. `redirect_uri` this is a url on your server which do the second call
4. `scope` a space delimited list of scopes
5. `state` with a CSRF token.
Você não enviaclient_secret , não pode confiar no cliente (o usuário e ou o navegador dele que tentam usar seu aplicativo). O cliente pode ver o script url ou java e encontrá-lo client_secrectfacilmente. É por isso que você precisa de outro passo.
Você recebe um codee state. O codeaqui é temporarye não é salvo em nenhum lugar.
Em seguida, você faz uma secondchamada para Instagram API(do seu servidor)
1. `grant_type` with the value of `authorization_code`
2. `client_id` with the client identifier
3. `client_secret` with the client secret
4. `redirect_uri` with the same redirect URI the user was redirect back to
5. `code` which we have already received.
Como a chamada é feita em nosso servidor, podemos usar com segurança client_secret(o que mostra como estamos) com o codeque o usuário concedeu client_idpara usar o recurso.
Em resposta, teremos access_token