developers · Oct 1, 2019

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

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

Quire API

Son güncelleme: 28 Mayıs 2026

Özet: Quire OAuth 2.0 API, uygulamanızın kullanıcının şifresini saklamadan onun Quire hesabı adına işlem yapmasına olanak tanır. Kayıtlı bir OAuth uygulamasına (istemci kimliği, sır, yönlendirme bağlantısı), dört adımlı yetkilendirme akışına (yapılandırma, yönlendirme, yanıt işleme, kodu jetonla değiştirme) ve erişim jetonları bir saat sonra sona erdiğinden bir yenileme jetonu döngüsüne ihtiyaç duyacaksınız.

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 şifresine hiç dokunmadan nasıl kimlik doğrularsınız? Quire API buna OAuth 2.0 ile yanıt verir. Bu yazı; OAuth uygulama kurulumunu, dört adımlı yetkilendirme akışını, erişim jetonu ve yenileme döngüsünü ve geliştiricilerin ilk derlemede sıkça yaptığı hataları ele almaktadır.

Quire'ın OpenAPI 1.0.0 sürümü Ekim 2019'da yayınlandı ve kararlılığını korudu. OAuth ile kullanıcılar, uygulamanızın kendi Quire içeriklerine (görevler, projeler, yorumlar, atamalar, etiketler, bitiş tarihleri) erişmesine yetki verir; siz ise kimlik bilgilerine hiç dokunmazsınız. Kullanıcı, bu erişimi istediği zaman şifresini değiştirmeden iptal edebilir; bu da OAuth onları gereksiz kılmadan önce şifreyi depolayan entegrasyonların neden bir güvenlik açığı olduğunu açıklar.

Hangi Quire entegrasyon yaklaşımı kullanım durumunuza uygundur?

OAuth API'sini kurmadan önce, API'nin gerçekten doğru araç olup olmadığından emin olun. Quire'ın 2026'da dört desteklenen entegrasyon yüzeyi vardır ve bunlar farklı sorunları çözer.

İhtiyacınız olan... Kullanın Neden
Kendi uygulamanızda bir kullanıcı adına Quire verilerini okuma veya değiştirme Quire OAuth API (bu yazı) Kullanıcı yetkilendirmesi, tam CRUD erişimi, yoklama gerekmez
Quire'daki olaylara tepki verme (görev oluşturuldu, durum değişti, yorum eklendi) Quire Ağ Kancaları Anlık iletim, yoklama yükü yok, hafif kurulum
Quire'ı bir Claude veya başka bir yapay zeka ajanına bağlama Quire MCP sunucusu LLM araçları için standart protokol, hazır sunucuyla gelir
Quire'ı bir otomasyon veya BI iş akışına çekme OAuth API ile n8n veya Power BI Kurulu ardışık düzenler, daha az özel kod

Tipik bir uygulama entegrasyonu geliştiriyorsanız (mobil uygulama, web panosu, eşitleme hizmeti), OAuth API tam aradığınız şeydir. Bu yazının geri kalanı bu yolda ilerlediğinizi varsayar.

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

Quire API'sini kullanabilmek için bir OAuth uygulaması oluşturmanız gerekir.

Quire OAuth uygulamanızı oluşturun

Uygulama oluşturmak için Quire hesabınıza giriş yapmış olmanız gerekir.

  1. Quire geliştirici uygulama konsoluna gidin ve Yeni uygulama oluştur düğmesine tıklayın. Quire geliştirici uygulama konsolu

  2. Uygulamanızın ait olduğu Quire Organizasyonunu seçin; organizasyon üyeleri, seçili organizasyona ait tüm Uygulamaları görüntüleyip düzenleyebilir. Quire uygulama organizasyonu

  3. Uygulamanıza bir ad ve Yönlendirme bağlantısı verin; Yönlendirme bağlantısının rolünü ilerleyen bölümlerde ele alacağız. Şimdilik aşağıdaki bağlantıyı kullanabilirsiniz:

    http://localhost:3000/callback

  4. Yeni uygulama oluştur düğmesine tıklayın; yeni oluşturulan OAuth uygulamanız geliştirici konsolu sayfasında görüntülenecek ve daha fazla yapılandırmanıza olanak tanıyacaktır. Quire uygulama listesi

Özetle, şu üç bilgiye sahip olmalısınız:

  • Geliştirme İstemci Kimliği: :wJoMEodI4fSSR54pfNwIuIzLnaJ
  • Geliştirme İstemcisi Sırrı: eb8faf4nyd1wbeconw060e9ejui8zg6w8p1hyoex
  • Geri Çağırma Bağlantısı: http://localhost:3000/callback

Quire uygulama kimlik bilgileri

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

Adım 1. Uygulamanızı Yapılandırın

Uygulama yapılandırma bilgilerinizi uygulamanızda barındırın.

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önlendirin

Kullanıcılarınızı Quire'ın OAuth uç noktası URI'sine yönlendireceğiniz bir yetkilendirme bağlantısı oluşturun. Bu, giriş yapmış Quire kullanıcılarının uygulamanıza içeriklerine erişim izni verebileceği bir web sayfası gösterecektir.

Ö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ü şöyle görünebilir:

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 oluşturmalısınız. Bu değer, Adım 3'te uygulamanıza değiştirilmeden geri iletilecektir. Uygulamanız bu değeri doğrulamalıdır. İsteğe bağlı olsa da bu parametreyi dahil etmenizi kesinlikle öneririz.

Ö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şleyin

OAuth 2.0 sunucusu, uygulamanızı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. Kullanıcı isteği 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 görünür:

Hata yanıtı:

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

Yetkilendirme kodu yanıtı:

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

Bir geri çağırma örneği şöyle görünebilir:

//...
} 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ızın redirect_uri adresine yönlendirildiğinde sorgu dizesi parametrelerinde bir kod ve state parametresi de bulunacaktır. State, isteği doğrulamak için kullanılan CSRF sahteciliği önleme jetonunuzdur.

Kodu ve state değerini sorgu dizesi parametrelerinden çıkarın. State bu noktada doğrulanabilir.

Bir doğrulama örneği şöyle görünebilir:

} 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 jetonuyla değiştirin

Uygulamanızın, çıkarılan yetkilendirme kodu ve aşağıdaki istek parametreleriyle jeton uç noktasına bir POST çağrısı yapması gerekir.

Parametre Değer
grant_type authorization_code
code {yetkilendirme-kodunuz}
client_id {istemci-kimliğiniz}
client_secret {istemci-sırrınız}
redirect_uri Adım 2'de redirect_uri belirttiyseniz zorunludur. Değer, orada kullanılanla aynı olmalıdır.

Erişim jetonu isteği örneği şöyle görünebilir:

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ız erişim jetonu JSON formatında olacaktır.

Örnek Yanıt:

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

Jeton, her Quire API'sine erişmek için gerektiğinden dikkatli ve kalıcı biçimde saklanmalıdır.

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

Uygulamanız artık kullanıcı adına API çağrıları yapmak için kullanabileceği bir erişim jetonuna sahiptir.

API'yi çağırın

İsteğin başlığında erişim jetonunu bir taşıyıcı jeton olarak ileterek API çağrısını yapın.

Bir API çağrısı örneği şöyle görünebilir:

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 dolmuş Quire API erişim jetonu nasıl yenilenir?

Erişim jetonu kasıtlı olarak 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 Verme Akışı kullanılırken erişim jetonları varsayılan olarak bir saatlik ömre sahiptir.

Bir erişim jetonu sona erdiğinde HTTP 401 hatası döndürülür:

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

Uygulamanızın erişim jetonunu yenilemesi gerekecektir.
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ız, kullanıcıyı kimlik doğrulama akışına yönlendirebilir.

Geliştiricilerin Quire API'sinde en sık yaptığı hatalar nelerdir?

Quire API'si üzerine geliştirme yapan ekipleri izledikten sonra aynı beş sorunun tekrarlandığını gördük. Hiçbiri ince değil; hepsi önlenebilir.

1. İstemci sırrını istemci tarafı koda gömmek. İstemci sırrı tam anlamıyla bir sırdır. Bir mobil uygulama ikili dosyasına veya tarayıcı paketine dahil edilirse herkes onu çıkararak uygulamanızı taklit edebilir. Sır yalnızca sizin denetiminizdeki bir sunucuda bulunmalıdır. Uygulamanız tamamen istemci taraflıysa (tek sayfalık uygulama, mobil), sırrı gömmek yerine OAuth 2.0 PKCE akışını kullanın.

2. State parametresini doğrulamayı unutmak. state parametresi CSRF saldırılarını önlemek için vardır. Geri çağırmada doğrulamayı atlarsanız, kötü amaçlı bir sitenin bir Quire hesabını sessizce saldırganın uygulama oturumuyla ilişkilendirmesine olanak tanıyan bir açık bırakmış olursunuz. Her istek için state oluşturun, oturumda saklayın ve dönen state değeri eşleşmeyen her geri çağırmayı reddedin.

3. Erişim jetonunu kalıcı saymak. Erişim jetonları bir saat sonra sona erer. Jetonu saklayıp hiç yenilemeyen Uygulamalar 1. günde sorunsuz çalışır, 2. günde sessizce bozulur. Yenileme jetonu döngüsünü, "kullanıcılar şikayet edince düzeltirim" yaması olarak değil, yayınlamadan önce başından itibaren oluşturun.

4. Değişiklikler için API'yi yoklamak. Yoklama; hız sınırını, gecikmeyi ve pili boşa tüketir. Quire'daki değişikliklere tepki vermeniz gerekiyorsa bunun yerine ağ kancalarını kullanın. Ağ kancası olayı anında size iletir; o olayı tespit etmek için yapacağınız API çağrısını hiç yapmanıza gerek kalmaz.

5. Yönlendirme bağlantısı izin listesini atlamak. Her OAuth uygulama kaydı bir yönlendirme bağlantıları listesi kabul eder. Bunu joker karakterle genişletir veya tam olarak yapılandırmazsanız, bir saldırgan kendi geri çağırmasını yönlendirme hedefiniz olarak kaydedip yetkilendirme kodlarını ele geçirebilir. Yalnızca uygulamanızın gerçekten kullandığı tam bağlantıları ekleyin.

API'yi ilk kez geliştiriyorsanız, 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 ele aldığını incelemektir.

Quire API ne zaman doğru seçim değildir?

Bunun yerine farklı bir entegrasyon yüzeyine yönelmeniz gereken üç durum.

  • Yalnızca olaylara tepki vermeniz gerekiyor, durum sorgulamıyorsunuz. Ağ kancaları daha basit, anlık iletim tabanlıdır ve salt okunur olay abonelikleri için kullanıcı yetkilendirmesi gerektirmez. Uygulamanızın amacı "bir şey olduğunda beni bilgilendir" ise API yerine ağ kancalarını kullanın.
  • Bir Claude veya LLM ajan entegrasyonu geliştiriyorsunuz. Quire MCP sunucusu burada doğru yüzeydir. Kimlik doğrulamayı yönetir, standart bir şema sunar ve OAuth kodu yazmanızı gerektirmez. MCP bunun için özel olarak tasarlanmıştır; OAuth API ile kendiniz yazarsanız aynı sonuç için çok daha fazla emek harcarsınız.
  • Tek seferlik bir veri dışa aktarımı yapıyorsunuz. Yalnızca bir projenin verilerini analiz veya yedekleme amacıyla bir kez çekmeniz gerekiyorsa, n8n entegrasyonu veya manuel CSV dışa aktarımı size bir haftalık geliştirme süresini kazandırır.

Bu durumların hiçbiri sizin için geçerli değilse OAuth API tam aradığınız araçtır.

Sık Sorulan Sorular

Quire API'si ücretli bir Quire planı gerektiriyor mu?

Hayır. Quire API'si, ücretsiz katman dahil her planda kullanılabilir. Tüm planlarda hız sınırı uygulanır; güncel uygulama başına sınırlar için API belgelerini inceleyin.

Quire API'si hangi programlama dillerini destekler?

API, JSON istek ve yanıt gövdeleriyle HTTP tabanlıdır; dolayısıyla bir HTTP istemcisi ve JSON ayrıştırıcısına sahip her dil işe yarar. Bu yazıdaki örnekler JavaScript ile yazılmıştır, ancak aynı akış Python, Go, Ruby, PHP ve diğer dillerde de aynı şekilde çalışır. Resmi bir istemci kütüphanesi yoktur; API yüzeyi, dilinizin HTTP istemcisi etrafında ince bir sarmalayıcı kullanmanın yeterli olduğu kadar küçüktür.

Quire erişim jetonları ne kadar süre geçerlidir?

Erişim jetonları varsayılan olarak bir saat sonra sona erer. Yenileme jetonları daha uzun süre geçerlidir ve kullanıcıya tekrar yetkilendirme sorulmadan yeni erişim jetonları almak için kullanılabilir. Yenileme jetonu döngüsünü başından itibaren uygulamanıza entegre edin.

Quire API'sini yalnızca okuma amaçlı kullanabilir miyim?

Evet. OAuth kapsamları, uygulamanızın yalnızca ihtiyaç duyduğu İzinleri talep etmenizi sağlar. Uygulamanız yalnızca görevleri okuyorsa okuma kapsamları isteyin. Quire kullanıcıları, yetkilendirme sayfasında talep edilen kapsamları görecek ve istek fazla görünürse reddedebilir; bu nedenle gereğinden fazla kapsam talep etmek dönüşüm oranını düşürür.

Quire API'si 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 ise 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 kodu yazmanızı gerektirmez. Geleneksel uygulama entegrasyonları için API'yi, LLM ajan entegrasyonları için ise MCP'yi kullanın.

Bundan sonra ne yapmalısınız?

Quire API için OAuth 2.0 akışının tamamı bu kadar: OAuth uygulama kurulumu, dört adımlı yetkilendirme, erişim jetonu kullanımı ve yenileme döngüsü. Geliştiricilerin çalışan bir entegrasyon kurup iki gün sonra bozan en yaygın nedeni, yenileme döngüsünü başından itibaren oluşturmak yerine sonraya bırakmaktır.

Quire geliştirici uygulama konsolundan başlayın veya tam API referansını okuyun. OAuth kodu yazmak istemiyorsanız, Quire MCP sunucusu kimlik doğrulamayı sizin için yönetir ve LLM ajan entegrasyonları için doğru seçimdir. Olay güdümlü entegrasyonlar için ise ağ kancaları, çoğu ilk kez API kullananın düştüğü yoklama kalıbından çok daha iyi bir çözümdür.

Jimmy Shiau
Software Engineer