Üç yöntemin karşılaştırması
WooCommerce iki yerleşik yöntem tanımlar: anahtarla doğrulama ve HTTP üzerinde OAuth 1.0a. Belge ayrıca herhangi bir WP REST API kimlik doğrulama eklentisinin de kullanılabileceğini söyler.
| Yöntem | Ne zaman | Nasıl gönderilir |
|---|---|---|
| Basic Auth | Site HTTPS ile açılıyorsa | Authorization başlığı: Basic ve base64(ck:cs) |
| Sorgu dizesi | HTTPS var ama sunucu başlığı okumuyor | consumer_key ve consumer_secret parametreleri |
| OAuth 1.0a (tek ayaklı) | Site şifresiz HTTP ile açılıyorsa | oauth_* parametreleri ve imza |
Sorgu dizesi yöntemi yalnız bir geçici çözümdür. Adres satırındaki değerler sunucu erişim kayıtlarında görünebilir. Mümkünse sunucuyu başlığı iletecek şekilde düzeltin.
Basic Auth başlığı nasıl kurulur?
Basic Auth için anahtar çiftini iki nokta üst üste ile birleştirip base64 ile kodlarsınız. Aşağıdaki değerler sahtedir.
- Kullanıcı adı: ck_SAHTE_ANAHTAR
- Şifre: cs_SAHTE_SIR
- Birleştirilmiş metin: ck_SAHTE_ANAHTAR:cs_SAHTE_SIR
- Başlık: Authorization: Basic ve ardından birleştirilmiş metnin base64 karşılığı
Belgeye göre Authorization başlığı WooCommerce 3.0 ile desteklenmeye başladı. Postman ya da Insomnia gibi araçlarda yetkilendirme türü olarak Basic Auth seçip iki anahtarı kullanıcı adı ve şifre alanlarına yazmanız yeterlidir.
Base64 bir şifreleme değildir, yalnız kodlamadır. Anahtarın ağda korunması HTTPS sayesindedir. Bu yüzden Basic Auth şifresiz HTTP üzerinde kullanılmaz.
HTTP üzerinde OAuth 1.0a
Siteniz HTTPS kullanmıyorsa anahtarların ele geçirilmemesi için OAuth 1.0a “tek ayaklı” imza zorunludur. Hazır bir OAuth 1.0a kütüphanesi kullanmak işi kolaylaştırır.
| Kural | Belgedeki değer |
|---|---|
| Zorunlu parametreler | oauth_consumer_key, oauth_timestamp, oauth_nonce, oauth_signature, oauth_signature_method |
| oauth_version | Gerekmez, gönderilmemeli |
| İmza algoritması | Yalnız HMAC-SHA1 ya da HMAC-SHA256 |
| Zaman damgası | 15 dakikalık pencere dışındaki istekler reddedilir |
| Nonce | Anahtara özgü, önerilen 32 karakterlik rastgele dizi |
| İstek gövdesi | İmzaya dahil edilmez |
İmza taban metninde sitenin API dizininde verdiği adres kullanılmalıdır. Site www ile açılıyorsa istekleri de www ile yapın. Belge, WordPress’te ham başlıkları okumanın her ortamda güvenilir olmadığını, sorgu dizesinin bazı durumlarda daha sağlam olduğunu da not eder.
Sık hatalar ve çözümleri
| Belirti | Olası neden | Çözüm |
|---|---|---|
| 401 Unauthorized | Anahtar yanlış ya da kullanıcının o kaynağa yetkisi yok | Yeni anahtar üretin, kullanıcının rolünü kontrol edin |
| “Consumer key is missing” | Sunucu Authorization başlığını PHP’ye iletmiyor | Sunucu ayarını düzeltin ya da sorgu dizesini kullanın |
| HTTPS’te sorun yok, HTTP’de 401 | HTTP’de Basic Auth kullanılmış | OAuth 1.0a imzası kullanın ya da HTTPS’e geçin |
| OAuth isteği reddediliyor | Saat farkı 15 dakikayı aşıyor | Sunucu saatini eşitleyin |
| Ara sıra 401 | FastCGI ortamında başlık kayboluyor | Barındırma firmasından başlık iletimini isteyin |
Hata kodlarının tamamı WooCommerce hata kodları sayfasında.
Sık sorulanlar
WooCommerce REST API için hangi kimlik doğrulama yöntemini kullanmalıyım?
Siteniz HTTPS ile açılıyorsa Basic Auth en basit yoldur. Kullanıcı adı Consumer Key, şifre Consumer Secret olur.
“Consumer key is missing” hatası ne demek?
Belgeye göre bu, sunucunun Authorization başlığını doğru okuyamadığını gösterir. Sunucu ayarını düzeltebilir ya da anahtarları HTTPS üzerinde sorgu dizesiyle gönderebilirsiniz.
Sitem HTTP ile açılıyor, Basic Auth çalışır mı?
Belge, HTTP üzerinde OAuth 1.0a imzasının kullanılması gerektiğini söyler. En temiz çözüm sitede HTTPS’i etkinleştirmektir.
OAuth imzasında hangi algoritmalar kabul edilir?
Yalnız HMAC-SHA1 ve HMAC-SHA256. Zaman damgası 15 dakikalık pencerenin dışındaysa istek reddedilir.
Kaynaklar
İlgili WooCommerce API konuları
Son güncelleme: 27.10.2026 · WooCommerce API rehberinin tamamı


