Greg
Zaten kütüphanesini gdata-python-client kullanıyorsanız, bu başvurunuzun yetki edilecek tek kullanıcı iseniz yapmak nispeten kolaydır. Genel mekanizmalar Eylül 2011'de bir blog post numaralı belge içinde ayrıntılı olarak açıklanmıştır, ancak bunları eksiksiz olarak açıklayacağım.
Part 1: APIs console'a gidin ve yeni bir proje başlatın.
Bölüm 2: proje itibaren, "Analizler API"
Bölüm "Hizmetler" gidip etkinleştirmek 3: proje itibaren, "API Erişimi" gidin ve bir OAuth'u oluştur" öğesini 2.0 müşteri kimliği ... "(sağladığınız değer önemli değil) bir ürün adı belirtmeniz gerekir. Uygulama türü sorulduğunda, "Yüklü Uygulama" yı ve ardından "İstemci Kimliği Oluştur" u seçin. Tek kullanıcı olacağınız için yalnızca bir yenileme jetonuna ihtiyacınız olacak ve bunu bir masaüstü uygulamasından tek seferde yetkilendirerek alabilirsiniz.
Bölüm 4: API'ler konsoldan istemci kimliği ve müşteri sırrı alın ve daha sonra boş bir belirteç oluşturmak: Eğer öyleyse emin değilim gerçi,
import gdata.gauth
CLIENT_ID = 'id-from-apis-console'
CLIENT_SECRET = 'secret-from-apis-console'
SCOPE = 'https://www.google.com/analytics/feeds/' # Default scope for analytics
token = gdata.gauth.OAuth2Token(
client_id=CLIENT_ID,
client_secret=CLIENT_SECRET,
scope=SCOPE,
user_agent='application-name-goes-here')
ben GData FAQ skopu var doğru.
Bölüm 5: ziyaret etmek için yetkilendirme URL oluşturmak için belirteci kullanın: Uygulama bir "Yüklü Uygulaması" olduğunu
url = token.generate_authorize_url(redirect_uri='urn:ietf:wg:oauth:2.0:oob')
olduğundan, yönlendirme URI varsayılan 'urn:ietf:wg:oauth:2.0:oob'
olduğunu. (Ayrıca, blog yayınının bir yazım hatası olduğunu ve redirect_url
anahtar kelimesini kullandığını unutmayın.
Part 6: URL'yi ziyaret edin ve başvurunuzu hesabınızın adına yapmak için başvurunuzu yetkilendirin. Yetkilendirildikten sonra, üzerinde bir kod bulunan bir sayfaya yönlendirileceksiniz. Bu kod, bir erişim belirteci ve uzun ömürlü bir yenileme belirteci değiştirmek için kullanılacaktır. Kodun 10 dakikalık bir ömrü vardır ve erişim belirtecinin bir saat ömrü vardır. Yenileme jetonu, kalıcılık taleplerini imzalamak için yeni erişim belirteçleri almanıza izin verir (ya da sizden revoke hesabınızın iznine kadar).
Bölüm 7: Bir erişim jetonu almak üzere kodu kullanın: Biz yüklü bir uygulama kullanıyorsanız çünkü
code = 'random-string-from-redirected-page'
token.get_access_token(code) # This returns the token, but also changes the state
Bu yine, blog yayını biraz farklıdır.
Bölüm 8: Eğer şimdi analitik müşteriye yapmak isteyen tüm isteklerini yapabilir belirteci olarak:
import gdata.analytics.client
client = gdata.analytics.client.AnalyticsClient()
token.authorize(client)
Bu hak burada büyük paradır. Erişim belirtecinin süresi dolduğunda, bu belirteçle imzalanan API istekleri reddedilir. Ancak, istemciyi yukarıdaki gibi yetkilendirerek, söz konusu istekler başarısız olduğunda, token
, yeni erişim belirteci almak için yenileme belirtecini kullanmaya çalışır. Yeni bir erişim belirteci başarıyla alırsa, istemci yeni erişim belirteci ile imzalanmış orijinal API isteğini yeniden gönderir.
Analytics API'yla ilgili hiçbir şey bilmiyorum, böylece daha fazla ayrıntı vermeyeceğim.
Gelecek Kullanım Not 1: Bilgileri ileride kullanmak üzere kaydetme. Bunu farklı yerlerden tekrar kullanabilirsiniz ve bu kullanımdan sonra kolayca kullanabilirsiniz. Bir diziden bir belirteç dönüm ve bir dize dışına dönüştürerek izin kütüphanesi tarafından sağlanan token_to_blob
ve token_from_blob
denilen yöntem vardır: Bunu yaptıktan sonra
saved_blob_string = gdata.gauth.token_to_blob(token)
, bir dosyada dize depolamak ve öldürebilir senin Python işleminin çalıştırılması. Tekrar kullanmak istiyorum zaman:
saved_blob_string = retrieve_string_from_file() # You'll need to implement this
token = gdata.gauth.token_from_blob(saved_blob_string)
Gelecek Kullanım Not 2: Bu simge çok uzun olması gibi bir istemci yetki ve tekrar ve tekrar tüm büyü yapmak için kullanılacak mümkün olacak etrafında yenileme belirteci.
token.redirect_uri = 'urn:ietf:wg:oauth:2.0:oob'
Gelecek Kullanım Not 3: nedense sen token.generate_authorize_url
uğramadan belirteç tekrar erişim elde etmek isterseniz, el nesnede bu ayarlamanız gerekir Ayrıca size yenileme, kaybedersem
url = token.generate_authorize_url(
redirect_uri='urn:ietf:wg:oauth:2.0:oob',
approval_prompt='force')
bu gerçekten katılıyorum: belirteci ve revoke orijinaline tarayıcısına gitmek zorunda kalmadan başka bir tane almak istiyorum, ha tarafından oluşturulan url ziyaret ederek yeni bir yenileme jetonu almak üzere
approval_prompt
parametresini kullanabilirsiniz sinir bozucu, şimdi aynı teknedeyim. Yalnızca kendi verilerinizi kullanıyorsanız ve kullanıcı hesaplarıyla kimlik doğrulaması yapmanız gerekmiyorsa OAuth2 kullanım durumu gerçekten anlamlı değildir. Bu yüzden neden çok fazla apis hareket ettikleri konusunda kafam karıştı. Anladığım kadarıyla OAuth1 bu geri dönüş url'si olmadan çalışıyor mu? Basit api anahtarını da kullanmayı tercih ederim, ancak bunun kullanımdan kaldırılıp kaldırılmadığı ve hangi aidatta olduğu açık değil.Umarız google yakında bu düzeltildi! –Bu sorudan bu yana 6 ay geçti, kimse bir cevap buldu? Buraya 2 tane benzer soru sordum. Http://stackoverflow.com/questions/8263776/how-to-use-oauth-with-google-calendar-to-access-only-one-calendar ve burada http: // stackoverflow .com/questions/8270994/how-do-i-use-googles-basit-api-access-key-to-access-google-takvim-info-ph ve benim sorunum aynı: Erişime ihtiyacım yok Bir başkası takvimi, sadece ONE'a erişmem gerekiyor. Bu yüzden Geliştirici Anahtar gitmenin yolu olmalı, ancak HERHANGİ eğitmenleri ya da örneklerini bulamıyorum. Birisi yardım edebilir mi? – Joel
Ayrıca sıfırdan basit https://www.googleapis.com/analytics/v3/management/accounts/XXXXX/webproperties/UA-XXXXX-1/profiles?pp=1&key={YOUR-KEY-HERE} adresini denedim başarısı. Kendi verileriniz olsa bile OAuth'a ihtiyacınız olduğunu düşünüyorum = (.. Bu soruya bir çözüm bulmayı çok isterim. – DougA