developers · Oct 1, 2019

Kahraman Ol: Quire API ile Kendi Uygulamanı Oluştur

✦
Yapay zeka ile çevrildi
· İngilizce görüntüle

Uygulama geliştirmek için Quire OAuth 2.0 API kimlik doğrulama akışı

Son güncelleme: 20 Temmuz 2026

TL;DR

Quire OAuth 2.0 API, uygulamanın bir kullanıcının Quire hesabı adına işlem yapmasını sağlar ve parolayı saklamanı gerektirmez. Kayıtlı bir OAuth uygulaması (istemci kimliği, sır, Yönlendirme bağlantısı), dört adımlı bir yetkilendirme akışı (yapılandır, yönlendir, yanıtı işle, kodu belirteçle değiştir) ve bir yenileme belirteci döngüsü gerekir, çünkü erişim belirteçleri bir saat sonra sona erer.

Bir kullanıcının Quire verilerini okuyan veya değiştiren bir uygulama geliştirmek tek bir kararla başlar: kullanıcının parolasını hiç görmeden kimlik doğrulamayı nasıl yapacaksın? Quire API bunu OAuth 2.0 ile çözer.

Bu yazı OAuth uygulaması kurulumunu, dört adımlı yetkilendirme akışını, erişim belirteci ve yenileme döngüsünü, ayrıca geliştiricilerin ilk geliştirmede bunu yanlış yapma yollarını adım adım anlatıyor.

Quire OpenAPI'nin 1.0.0 sürümü Ekim 2019'da yayımlandı ve o günden beri kararlı kalıyor. OAuth ile kullanıcılar, uygulamanın Quire içeriğine (görevler, projeler, yorumlar, atamalar, etiketler, bitiş tarihleri) erişmesine izin verir ve sen kimlik bilgilerine hiç dokunmazsın.

Kullanıcı bu erişimi parolasını değiştirmeden istediği zaman iptal edebilir. OAuth gerekliliği ortadan kaldırmadan önce parola saklayan entegrasyonların güvenlik açısından kötü bir kalıp olmasının nedeni buydu.

Kullanım senaryona hangi Quire entegrasyon yaklaşımı uyar?

OAuth API'yi kurmadan önce, API'nin gerçekten doğru araç olduğundan emin ol. 2026'da Quire'ın desteklenen dört entegrasyon yüzeyi var ve her biri farklı bir sorunu çözüyor.

İhtiyacın... Kullan Neden
Kendi uygulamanda bir kullanıcı adına Quire verilerini okumak veya değiştirmek Quire OAuth API (bu yazı) Kullanıcı yetkilendirmesi, tam CRUD erişimi, yoklama gerektirmez
Quire'daki olaylara tepki vermek (görev oluşturuldu, durum değişti, yorum eklendi) Quire Ağ Kancaları Anlık bildirimli, yoklama yükü yok, hafif kurulum
Quire'ı Claude'a veya başka bir yapay zekâ ajanına bağlamak Quire MCP sunucusu LLM araçları için standart protokol, hazır sunucuyla gelir
Quire'ı bir otomasyon veya BI iş akışına çekmek OAuth API artı n8n veya Power BI Oturmuş akışlar, daha az özel kod

Tipik bir uygulama entegrasyonu geliştiriyorsan (mobil uygulama, web kontrol paneli, senkronizasyon servisi), aradığın şey OAuth API'dir. Yazının geri kalanı bu yolda olduğunu varsayıyor.

Quire API için OAuth uygulaması nasıl kurulur?

Quire API'yi kullanmak için bir OAuth uygulaması oluşturman gerekir.

Quire OAuth uygulamanı oluştur

Uygulama oluşturmak için Quire hesabında oturum açmış olmalısın.

  1. Quire geliştirici uygulama konsoluna git ve Yeni uygulama oluştur düğmesine tıkla. Quire geliştirici uygulama konsolu

  2. Uygulamanın ait olacağı Quire Organizasyonunu seç. Organizasyon üyeleri, seçilen organizasyona ait tüm uygulamaları görüntüleyip düzenleyebilir. Quire uygulaması organizasyon seçimi

  3. Uygulamana bir ad ve Yönlendirme bağlantısı ver. Yönlendirme bağlantısının rolünü biraz sonra ele alacağız. Şimdilik şu bağlantıyı girebilirsin:

    http://localhost:3000/callback

  4. Yeni uygulama oluştur düğmesine tıkla. Yeni oluşturduğun OAuth uygulaması geliştirici konsolu sayfasında görünür ve onu daha fazla yapılandırmana olanak tanır. Quire uygulama listesi

Özetle, elinde şu üç bilgi olmalı:

  • Geliştirme İstemci Kimliği: :wJoMEodI4fSSR54pfNwIuIzLnaJ
  • Geliştirme İstemcisi Sırrı: eb8faf4nyd1wbeconw060e9ejui8zg6w8p1hyoex
  • Yönlendirme bağlantısı: http://localhost:3000/callback

İstemci kimliği, istemci sırrı ve yönlendirme bağlantısını gösteren Quire OAuth uygulama ayarları

Quire API için geliştirme ortamı nasıl kurulur?

Adım 1. Uygulamanı yapılandır

Uygulama yapılandırma bilgilerini uygulamanın içinde tut.

const clientId = ':wJoMEodI4fSSR54pfNwIuIzLnaJ';
const clientSecret = 'eb8faf4nyd1wbeconw060e9ejui8zg6w8p1hyoex';
const redirectURI = 'http://localhost:3000/callback';
  
const authorizationUrl = 'https://quire.io/oauth';
const tokenUrl = 'https://quire.io/oauth/token';
const apiUrl = 'https://quire.io/api';

Adım 2. Kullanıcıyı Quire'da uygulamayı yetkilendirmeye yönlendir

Kullanıcılarını Quire'ın OAuth uç noktası URI'sine yönlendireceğin bir yetkilendirme bağlantısı oluştur. Bu, oturum açmış Quire kullanıcılarının uygulamanın içeriklerine erişmesine izin verebileceği bir web sayfası gösterir.

Örnek bağlantı:

https://quire.io/oauth?client_id=your-client-ID&redirect_uri=your-redirect-uri

Bir yetkilendirme bağlantısı görünümü şuna benzeyebilir:

var http = require('http');
var url = require('url');
var server = http.createServer(function (req, res) { 
    var uri = url.parse(req.url, true);
    if (uri.pathname == '/') {        
        //..    
    } else if (uri.pathname == "/install") {
        var authUrl = authorizationUrl 
            + '?client_id=' + clientId 
            + '&redirect_uri=' + encodeURIComponent(redirectURI);
        res.writeHead(200, { 'Content-Type': 'text/html' });
        res.write(
             '<html><body>' 
            + '<a href="' + authUrl + '">Connect Quire</a>' 
         + '</body></html>');
        res.end();

    } else if (uri.pathname == "/callback") {
        //...
    }
});
server.listen(3000);

state parametresi, Siteler Arası İstek Sahteciliği (CSRF) saldırılarını önlemek için kullanılan rastgele bir dizedir. Rastgele bir karakter dizisi üretmelisin. Bu değer, Adım 3'te uygulamana değiştirilmeden geri iletilir.

Uygulaman bu değeri doğrulamalıdır. İsteğe bağlı olsa da bu parametreyi eklemeni önemle öneriyoruz.

Örnek bağlantı:

https://quire.io/oauth?client_id=your-client-ID&redirect_uri=your-redirect-uri&state=lpcl9v94z

Adım 3. OAuth 2.0 sunucu yanıtını işle

OAuth 2.0 sunucusu, uygulamanın erişim isteğine redirect_uri içinde belirtilen bağlantıyı kullanarak yanıt verir.

Kullanıcı erişim isteğini onaylarsa yanıt bir yetkilendirme kodu içerir. Onaylamazsa yanıt bir hata mesajı içerir. Web sunucusuna dönen yetkilendirme kodu veya hata mesajı, aşağıda gösterildiği gibi sorgu dizesinde yer alır:

Bir hata yanıtı:

http://localhost:3000/callback?error=access_denied

Bir yetkilendirme kodu yanıtı:

http://localhost:3000/callback?code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7

Bir geri çağırma örneği şuna benzeyebilir:

//...
} else if (uri.pathname == "/callback") {
   var result = uri.query;
   var message = 'Auth fail';
   if (result["error_description"] != null) {
       message = result["error_description"];
       if (result["error"] == 'access_denied') {
           //display reject message
       }
       messageView(res, message);
   } else if (result["code"] != null) {
       return exchangeAccessToken(result["code"])
       .then(function(data) {
            var token = data['access_token'];
            message = token != null ? 'Success': 'Fail';
            messageView(res, message);
        });
   }
}

Kullanıcı uygulamanın redirect_uri adresine geri yönlendirildiğinde, sorgu dizesi parametrelerinde bir code ve state parametresi de bulunur. State, isteği doğrulamak için kullandığın CSRF sahtecilik karşıtı belirtecidir.

Kod ve state değerlerini sorgu dizesi parametrelerinden çıkar. State bu noktada doğrulanabilir.

Bir doğrulama örneği şuna benzeyebilir:

} else if (result["code"] != null) {
    if (result["state"] != stateFromSession(res))
        return messageView(res, 'invalid state');
            
    return exchangeAccessToken(result["code"])
    .then(function(data) {
         var token = data['access_token'];
         message = token != null ? 'Success': 'Fail';
         messageView(res, message);
     });
}

Adım 4. Yetkilendirme kodunu erişim belirteciyle değiştir

Uygulaman, çıkardığı yetkilendirme koduyla ve aşağıdaki istek parametreleriyle belirteç uç noktasına bir POST çağrısı yapmalıdır.

Parametre Değer
grant_type authorization_code
code {your-authorization-code}
client_id {your-client-ID}
client_secret {your-client-secret}
redirect_uri Adım 2'de redirect_uri belirttiysen zorunludur. Değer, orada kullanılanla birebir aynı olmalıdır.

Bir erişim belirteci isteği örneği şuna benzeyebilir:

var request = require('request');
function exchangeAccessToken(code) {
    return new Promise(function(resolve, reject){
        request.post({
            url: tokenUrl,
            form: {
              grant_type: 'authorization_code',
              code: code,
              client_id: clientId,
              client_secret: clientSecret,
              redirect_uri: redirectURI
            }
          },
          function (error, httpResponse, body) {
            if (error) {
              return reject(error);
            }
            resolve(JSON.parse(body))
          });
    });
}

Yanıt olarak aldığın erişim belirteci JSON biçimindedir.

Örnek yanıt:

{ 
  "access_token":"ACCESS_TOKEN", 
  "token_type": "bearer", 
  "expires_in":2592000, 
  "refresh_token":"REFRESH_TOKEN"
}

Belirteci özenle ve kalıcı olarak sakla, çünkü her Quire API çağrısı için ona ihtiyacın var.

Quire erişim belirteciyle API çağrıları nasıl yapılır?

Uygulamanda artık kullanıcı adına API çağrıları yapabilecek bir erişim belirteci var.

API'yi çağır

API çağrısını, erişim belirtecini isteğin başlığında taşıyıcı belirteç (bearer token) olarak ileterek yap.

Bir API çağrısı örneği şuna benzeyebilir:

function getCurrentUser(token) {
    return new Promise(function(resolve, reject){
        request.get({
            url: apiUrl + '/user/id/me', 
            headers: {
              "Authorization": "Bearer " + token
            }
          }, 
          function (error, httpResponse, body) {
            if (error) {
              return reject(error);
            }
            resolve(JSON.parse(body))
          });
    });
}

Örnek yanıt:

{
  "email": "john@gmail.cc",
  "website": "https://coolwebsites.com",
  "id": "My_ID",
  "description": "This is *cool*!",
  "url": "https://quire.io/u/My_ID",
  "nameText": "My Name",
  "nameHtml": "My Name",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "iconColor": "37",
  "name": "My Name",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Süresi dolan Quire API erişim belirteci nasıl yenilenir?

Erişim belirteci bilerek yalnızca kısa süreli kullanım için tasarlanmıştır. Bu, OAuth 2.0'ın önemli bir güvenlik mekanizmasıdır. Yetkilendirme Kodu Akışı kullanıldığında erişim belirteçlerinin ömrü varsayılan olarak bir saattir.

Bir erişim belirtecinin süresi dolduğunda HTTP 401 hatası döner:

{ 
  code: 401, 
  message: 'Invalid or expired token.'
}

Uygulamanın erişim belirtecini yenilemesi gerekir.

function refreshToken(refreshToken) {
    return new Promise(function(resolve, reject){
        request.post({
            url: tokenUrl, 
            form: {
              grant_type: 'refresh_token',
              refresh_token: refreshToken,
              client_id: clientId,
              client_secret: clientSecret
            }
          }, 
          function (error, httpResponse, body) {
            if (error) {
              return reject(error);
            }
            resolve(JSON.parse(body))
          });
    });
}

Alternatif olarak uygulaman kullanıcıyı kimlik doğrulama akışına yeniden yönlendirebilir.

Quire API'de geliştiricilerin en sık yaptığı hatalar neler?

Quire API üzerine geliştirme yapan ekipleri izledikten sonra aynı beş sorunun tekrar ettiğini gördük. Hiçbiri karmaşık değil; hepsi önlenebilir.

1. İstemci sırrını istemci tarafı kodunda saklamak. İstemci sırrı adı üstünde bir sırdır. Bir mobil uygulama ikilisine veya tarayıcı paketine girerse herkes onu çıkarıp uygulamanın kimliğine bürünebilir.

Sır yalnızca kontrol ettiğin bir sunucuda durmalı. Uygulaman tamamen istemci tarafındaysa (tek sayfalı uygulama, mobil), sırrı gömmek yerine OAuth 2.0 PKCE akışını kullan.

2. State parametresini doğrulamayı unutmak. state parametresi CSRF saldırılarını önlemek için vardır. Geri çağırmada doğrulamayı atlarsan, kötü niyetli bir sitenin bir Quire hesabını sessizce bir saldırganın uygulama oturumuyla ilişkilendirmek için kullanabileceği bir açık bırakmış olursun.

state değerini her istek için üret, oturumda sakla ve dönen state eşleşmeyen her geri çağırmayı reddet.

3. Erişim belirtecini kalıcı sanmak. Erişim belirteçleri bir saat sonra sona erer. Belirteci saklayıp hiç yenilemeyen uygulamalar ilk gün sorunsuz çalışır, ikinci gün sessizce bozulur.

Yenileme belirteci döngüsünü herhangi bir şey yayımlamadan önce kur; "kullanıcılar şikâyet edince düzeltiriz" yaması olarak bırakma.

4. Değişiklikler için API'yi yoklamak. Yoklama; hız sınırını, gecikmeyi ve bataryayı tüketir. Quire'daki değişikliklere tepki vermen gerekiyorsa bunun yerine ağ kancalarını kullan.

Ağ kancası olayı sana anında iletir; o olayı fark etmek için yapacağın API çağrısı hiç gerekmez.

5. Yönlendirme bağlantısı izin listesini atlamak. Her OAuth uygulaması kaydı bir Yönlendirme bağlantısı listesi kabul eder. Bunu joker karakterle bırakırsan veya tam olarak yapılandırmazsan, bir saldırgan kendi geri çağırmasını senin yönlendirme hedefin olarak kaydedip yetkilendirme kodlarını ele geçirebilir.

Yalnızca uygulamanın gerçekten kullandığı tam bağlantıları ekle.

API ile ilk kez çalışıyorsan kalıpları öğrenmenin en hızlı yolu, n8n bağlayıcısı gibi mevcut bir entegrasyonu çatallayıp kimlik doğrulama, yenileme ve hata durumlarını nasıl yönettiğini incelemektir.

Quire API ne zaman doğru seçim olmaz?

Bunun yerine başka bir entegrasyon yüzeyine yönelmen gereken üç durum var.

  • Yalnızca olaylara tepki vermen gerekiyor, durumu sorgulamana gerek yok. Ağ kancaları daha basittir, anlık bildirimlidir ve salt okunur olay abonelikleri için kullanıcı yetkilendirmesi gerektirmez. Uygulamanın işi "bir şey olunca bana haber ver" ise API'yi değil ağ kancalarını kullan.
  • Claude veya LLM ajan entegrasyonu geliştiriyorsun. Burada doğru yüzey Quire MCP sunucusudur. Kimlik doğrulamayı yönetir, standart bir şema sunar ve OAuth kodunu kendin yazmanı gerektirmez. MCP bunun için tasarlandı; OAuth API ile kendi çözümünü kurmak aynı sonuç için daha fazla iş demektir.
  • Tek seferlik bir veri dışa aktarımı yapıyorsun. Bir projenin verisini analiz veya yedek için bir kez çekmen gerekiyorsa n8n entegrasyonu ya da elle CSV dışa aktarımı sana bir haftalık geliştirme süresi kazandırır.

Bunların hiçbiri geçerli değilse aracın OAuth API'dir.

Quire Kontrol Paneli Görünümü: tüm projen tek net görünümde

Sıkça Sorulan Sorular

Quire API için ücretli bir Quire planı gerekir mi?

Hayır. Quire API, ücretsiz katman dahil her planda kullanılabilir. Hız sınırları tüm planlarda geçerlidir; uygulama başına güncel sınırlar için API belgelerine göz at.

Quire API hangi programlama dillerini destekler?

API, JSON istek ve yanıt gövdelerine sahip HTTP tabanlıdır; bu yüzden bir HTTP istemcisi ve JSON ayrıştırıcısı olan her dil çalışır. Bu yazıdaki örnekler JavaScript ile, ancak aynı akış Python, Go, Ruby, PHP ve başka her dilde aynen çalışır. Resmî bir istemci kütüphanesi yoktur; API yüzeyi küçük olduğu için dilinin HTTP istemcisi etrafında ince bir sarmalayıcı yazmak yaygın kalıptır.

Quire erişim belirteçleri ne kadar süre geçerli kalır?

Erişim belirteçleri varsayılan olarak bir saat sonra sona erer. Yenileme belirteçleri daha uzun süre geçerlidir ve kullanıcıya yeniden sormadan yeni erişim belirteçleri almak için kullanılabilir. Yenileme belirteci döngüsünü uygulamana ilk günden ekle.

Quire API'yi salt okunur erişim için kullanabilir miyim?

Evet. OAuth kapsamları, yalnızca uygulamanın ihtiyaç duyduğu izinleri istemeni sağlar. Uygulaman yalnızca görevleri okuyorsa okuma kapsamlarını iste. Quire kullanıcıları istenen kapsamları yetkilendirme sayfasında görür ve istek aşırı görünürse reddedebilir; bu yüzden fazla izin istemek dönüşümü düşürür.

Quire API ile Quire MCP sunucusu arasındaki fark nedir?

API, bir kullanıcı adına Quire verilerini okumak veya değiştirmek isteyen her uygulama için genel amaçlı bir REST yüzeyidir. MCP sunucusu Claude ve diğer LLM ajanları için özel olarak tasarlanmıştır: kimlik doğrulamayı yönetir, standart bir araç şeması sunar ve OAuth kodunu kendin yazmanı gerektirmez. Geleneksel uygulama entegrasyonları için API'yi, LLM ajan entegrasyonları için MCP'yi kullan.

Buradan nereye gidiyoruz?

Quire API için tam OAuth 2.0 akışı bu: OAuth uygulaması kurulumu, dört adımlı yetkilendirme, erişim belirteci kullanımı ve yenileme döngüsü. Geliştiricilerin çalışan bir entegrasyonu yayımlayıp iki gün sonra bozulmasının en yaygın nedeni, yenileme döngüsünü ilk günden kurmak yerine sonraya bırakılacak bir düzeltme saymaktır.

Quire geliştirici uygulama konsolundan başla ya da tam API referansını oku. OAuth kodu yazmak istemiyorsan Quire MCP sunucusu kimlik doğrulamayı senin yerine yönetir ve LLM ajan entegrasyonları için doğru seçimdir.

Olay odaklı entegrasyonlarda ağ kancaları, ilk kez API entegrasyonu yapanların çoğunun sonunda vardığı yoklama kalıbından genellikle daha uygundur. OAuth uygulaması kurmadan hızlıca değişiklik yapmak istersen Quire CLI, proje yönetimi komutlarını doğrudan terminalinden çalıştırır.

Jimmy Shiau
Software Engineer