ios - tools - xcode versions stack overflow




Erro CredStore Perform Query (8)

Estou com um problema ao fazer chamadas de API para o back-end de meus aplicativos, agora todas as conexões são solicitadas com

CredStore - performQuery - Error copying matching creds.  Error=-25300, query={
    atyp = http;
    class = inet;
    "m_Limit" = "m_LimitAll";
    ptcl = http;
    "r_Attributes" = 1;
    srvr = "myappsurl.com";
    sync = syna;
}

Estou um pouco perdido porque não tenho certeza do que está causando isso, ou do que a CredStore faz. Qual é a finalidade do CredStore no iOS?


A causa de eu ter recebido este erro foi devido a eu acidentalmente usar dois espaços entre o "Portador" e o token de acesso no meu cabeçalho de Autorização.

Incorreta:

request.setValue("Bearer  \(accessToken)", forHTTPHeaderField: "Authorization")

Corrigir:

request.setValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization")

Erro simples, mas demorou um pouco para encontrá-lo.


Este é um erro de transporte, vamos adicionar uma permissão de transporte como essa no arquivo plist:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

Tenha cuidado, pois permite a conexão a qualquer servidor do seu aplicativo. Leia mais sobre o App Transport Security antes de prosseguir. Ver comentário de @kezi


Este mesmo problema acontece comigo e descobri que, se o URL da API não contiver um "/" no final do URL, o iOS não enviará o valor "Autorização" para o servidor. Devido ao qual você verá uma mensagem como postada em questão no console.

Então, basta adicionar "/" no final do URL

https://example.com/api/devices/

Eu editei o String que contém o URL para corrigir esse problema:

var myUrl = "http://myurl.com"
myUrl = myUrl.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)!

let url = URL(string: myUrl)

Não tenho certeza por que recebemos esse erro ao executar solicitações com o Alamofire, mas se você fizer solicitações de API com algum token nos cabeçalhos HTTP, talvez não precise de credenciais armazenadas. Então, podemos desativá-lo para o nosso pedido:

let configuration = URLSessionConfiguration.default
configuration.httpAdditionalHeaders = ourHeaders
// disable default credential store
configuration.urlCredentialStorage = nil

let manager = Alamofire.SessionManager(configuration: configuration)
...

Nenhum erro após tal mudança.


No meu caso, eu não estava inicializando o Stripe SDK com a chave da API.

        STPPaymentConfiguration.shared().publishableKey = publishableKey

No caso de qualquer operação com Stripe, podemos imprimir o log de erros, é fácil de entender.

        print(error.debugDescription)

OK, eu tive esse erro e lutei com ele por um longo tempo (anos) ao interagir com meu aplicativo Ruby on Rails.

Eu tinha credenciais padrão configuradas conforme descrito na resposta aceita, mas ainda recebi o erro e estava confiando em uma resposta didReceiveChallenge para fornecer as credenciais - que, felizmente, funcionou como uma solução.

Mas! Acabei de encontrar a solução!

Eu estava trabalhando em um palpite de que os campos protectedSpace não correspondiam ao desafio Authorization do servidor Ruby on Rails - e eu olhei para o campo real, que parecia ser o único que estava sendo deixado indefinido.

Comecei imprimindo os cabeçalhos de resposta do servidor e, embora conseguisse examiná-los, eles não incluíam o campo Autorização da WWW que incluiria o campo de região.

Eu pensei que isso era talvez porque o meu aplicativo Rails não estava especificando o reino, então eu comecei a olhar para o lado do Rails das coisas.

Eu encontrei que eu poderia especificar o reino na chamada para,

authenticate_or_request_with_http_basic

... que estou usando para autenticação básica HTTP.

Eu não estava especificando um reino já, então adicionei um,

authenticate_or_request_with_http_basic("My Rails App")

Eu adicionei então a string correspondente ao protectionSpace,

NSURLProtectionSpace *protectionSpace =
    [[NSURLProtectionSpace alloc] initWithHost:@"myrailsapp.com"
        port:443
        protocol:NSURLProtectionSpaceHTTPS
        realm:@"My Rails App"
        authenticationMethod:NSURLAuthenticationMethodHTTPBasic];

Voila! Isso funcionou, e eu não consigo mais

CredStore - performQuery - Error copying matching creds.  Error=-25300

Mesmo depois de especificar o reino no aplicativo Rails, eu ainda não o vejo passado no cabeçalho HTTP, não sei por que, mas pelo menos funciona.


Se você receber este erro, ao usar o AVPlayer, apenas chame .play () no thread principal





xcode9