2012-07-28 21 views
5

Blogger REST API'sına bir DELETE isteği gönderme (v3.0), delete method kullanarak bir gönderiyi silmeye çalışıyorum.Blogger API kullanarak bir yazıyı silmeye çalışmanız "bulunamadı" hatasını döndürüyor

api_uri = 'https://www.googleapis.com/blogger/v3/blogs/%s/posts/%s' % (blogId, postId) 
result = urlfetch.fetch(url=api_uri, 
        method=urlfetch.DELETE, 
        headers={'Authorization' : oauth_token}) 

self.response.out.write(result.content) 

Fakat sunucu döner: Bunun için aşağıdaki kodu kullanabilirsiniz At

api_uri = 'https://www.googleapis.com/blogger/v3/blogs/%s/posts/%s' % (blogId, postId) 
result = urlfetch.fetch(url=api_uri, 
        headers={'Authorization' : oauth_token}) 
self.response.out.write(result.content) 

: Ancak

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "notFound", 
    "message": "Not Found" 
    } 
    ], 
    "code": 404, 
    "message": "Not Found" 
} 
} 

, aşağıdaki kodu kullanarak, bu yazı hakkında bilgi alabilirsiniz Bu an ne yanlış yapıyorum anlayamıyorum - istek yetkisi, blogId ve postId doğru - ama yine de, sunucu "döndürür" "hata bulundu.

Bu sorunu nasıl çözeceğinizi biliyorsanız veya yararlı önerilerde bulunursanız lütfen bana yardım edin.
Zaman ayırdığınız için teşekkür ederiz. aşağıdaki URL istekleri gönderirseniz:

# https://www.googleapis.com/blogger/v3/users/{userID} 
# https://www.googleapis.com/blogger/v3/users/self 

sunucusu da verir:

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "notFound", 
    "message": "Not Found" 
    } 
    ], 
    "code": 404, 
    "message": "Not Found" 
} 
} 


UPD 2: söylemek unuttum


UPD 1 OAuth 2.0 for Server to Server Applications kullanıyorum. kullanarak,

{ 
    "access_token" : "1/8xbJqaOZXSUZbHLl5EOtu1pxz3fmmetKx9W8CV4t79M", 
    "token_type" : "Bearer", 
    "expires_in" : 3600 
} 

Ve tanımlamak değişken oauth_token:

jwt_claim_set = { 
    'iss' : '{id}@developer.gserviceaccount.com', 
    'scope' : 'https://www.googleapis.com/auth/blogger', 
    'aud' : 'https://accounts.google.com/o/oauth2/token', 
    'exp' : expire, 
    'iat' : timestamp 
} 

sunucu döndürür: Böylece, yetki jetonu almak üzere, aşağıdaki JWT İddiası Set kullanarak https://accounts.google.com/o/oauth2/token isteği göndermek

data = simplejson.loads(result.content) 
oauth_token = data['token_type'] + ' ' + data['access_token'] 
+1

Kimlikler ve kimlik doğrulama belirtecini daha önce kontrol etmiş olabileceğiniz düşünüldüğünde, sorgularınızı manuel olarak [cURL] (http://en.wikipedia.org/wiki/CURL) ile sınamanızı öneririm. Sonucu bağlı olarak, sorun, url, ya da başka bir şey inşa nasıl olup olmadığını bilecek ... –

+0

@AlexisHuet, Öneri için teşekkür ederiz, ama yine de, sorunun URL'de olmadığından eminim. Şüphesiz, sorun "başka bir şey" dir. – B7ackAnge7z

+0

Sorunun, kullandığınız modülde olup olmadığını görmek için 'request' ile denediniz mi? –

cevap

4

OAuth2'yi düzgün şekilde kullandığınızdan emin misiniz? Görünüşe göre düzgün bir şekilde giriş yapmadın ve bu yüzden bu hataları alıyorsun.

Aynı sorguları Google OAuh2 Playground'u (https://code.google.com/oauthplayground/) kullanarak deneyin ve ne olduğunu görün.

+0

İletiniz için teşekkür ederiz, ancak dediğim gibi Sunucu için Sunucu Uygulaması için OAuth 2.0 kullanmaya çalışıyorum. Şu anda OAuth 2.0 Playground bu yetkilendirme yöntemini desteklememektedir. OAuth2'nin düzgün kullanımı için, bir şeylerin yanlış olmasının başka bir hata göstermesi gerektiğini düşünüyorum. – B7ackAnge7z

+0

Başlıklara Yetkilendirmeyi eklemek yerine neden denemek istiyorsunuz? URL'ye? Access_token = ekleyin? Bunu yapmak için böyle kullanırım. – pyriku

+0

[Dokümantasyon] 'a (https://developers.google.com/blogger/docs/3.0/using#DeletingAPost) göre,' Yetkilendirme 'başlığının gönderilmesi gerekir. Sunucu için Sunucu Uygulamaları için OAuth 2.0 ile 'access_token = ' kullandığını mı demek istediniz? – B7ackAnge7z

İlgili konular