Referência
https://github.com/wirecardBrasil/moip-sdk-php#solicitar-permissões-de-acesso-ao-usuário
Descrição
O código exemplo no GitHub (referência acima) deveria ser alterado para deixar mais evidente a função do método setScope() e do terceiro parâmetro do construtor da classe Connect.
Porque não faz sentido especificar true para o referido parâmetro e depois usar uma sequência de setScope(). É redundante e pode passar a falsa informação que naquela sequência se define o valor do campo scope da URL gerada.
Comportamento esperado
Apenas os itens definidos por setScope() seriam usados na URL gerada pelo método getAuthUrl(), ou seja apenas:
- RECEIVE_FUNDS
- REFUND
- MANAGE_ACCOUNT_INFO
- RETRIEVE_FINANCIAL_INFO
Comportamento atual
Todos os possíveis itens de scope são usados na URL gerada, ou seja:
- RECEIVE_FUNDS
- REFUND
- MANAGE_ACCOUNT_INFO
- RETRIEVE_FINANCIAL_INFO
- TRANSFER_FUNDS
- DEFINE_PREFERENCES
Solução Possível
Trocar o valor inicial da variável $scope de true para false.
Em complemento, seria mais adequado — e condizente com a sua função — se o nome do método fosse addScope() em vez de setScope().
Passo a passo para gerar o erro
Basta apenas executar o código-exemplo, como está atualmente na referência, e verificar que a URL gerada inclui TRANSFER_FUNDS e DEFINE_PREFERENCES no parâmetro scope.