Platform Verilerini NoSQL'e yazma Ben Kimim? Serdar Dalgıç (@serdaroncode) Markafoni'de Yazılım Geliştirme Uzmanı http://github.com/serdardalgic http://www.serdardalgic.org/
Platform Verilerini NoSQL'e yazma İhtiyaçlar Yeni kullanıcıların üye olması Mevcut kullanıcıların kimlik doğrulaması İnsanlar Twitter/Facebook.. kullanıyorlar zaten. Bunları birleştirelim, insanlar sitemize Twitter/Facebook v.s. bilgileri ile girsinler.
Platform Verilerini NoSQL'e yazma Oauth Nedir? Kullanıcıların, üye oldukları bir siteye/platforma giriş yaparak, başka bir site/platformla bu kullanıcı adı/şifre bilgilerini paylaşmadan, sadece izin verdikleri bilgileri paylaşmalarını sağlayan bir kimlik doğrulama protokolüdür. OpenID ile karıştırmamak gerekir. OpenID'deki gibi kullanıcının kimliğinin doğrulanması değil, asıl istemci siteye/platforma sadece belli bilgilere ulaşmalarını sağlayacak bir anahtar (access-token) verilmesidir.
Platform Verilerini NoSQL'e yazma Öne Çıkanlar Django Social Auth http://github.com/omab/django-social-auth http://django-social-auth.readthedocs.org/ Django Allauth http://github.com/pennersr/django-allauth
Platform Verilerini NoSQL'e yazma Niye Django Social Auth? En çok indirilen paketlerden biri Hala devam eden geliştirme Kodu inceleyen, koda katkı veren bir çok göz
Platform Verilerini NoSQL'e yazma settings.py Ayarları – Devam Kullanacağımız backend için OAuth anahtarlarını ekliyoruz: TWITTER_CONSUMER_KEY = '' TWITTER_CONSUMER_SECRET = '' FACEBOOK_APP_ID = '' FACEBOOK_API_SECRET = '' Django'nun öntanımlı kullanıcı modelinden başka bir kullanıcı modeli kullanıyorsak, onu belirtiyoruz (Django 1.5 sonrası): SOCIAL_AUTH_USER_MODEL = 'myapp.CustomUser' Ve daha bir çok farklı ayar: http://django-social-auth.readthedocs.org/en/latest/configuration.html
Platform Verilerini NoSQL'e yazma Pipeline Kullanıcı oluşturma, eşleştirme ve temel veri toplama için yazılmış, birbirini takip eden, pipeline boyunca user, socialauth_user v.s. gibi değişkenleri güncelleyen yapı. Öntanımlı pipeline: ( 'social_auth.backends.pipeline.social.social_auth_user', #'social_auth.backends.pipeline.associate.associate_by_email', 'social_auth.backends.pipeline.user.get_username', 'social_auth.backends.pipeline.user.create_user', 'social_auth.backends.pipeline.social.associate_user', 'social_auth.backends.pipeline.social.load_extra_data', 'social_auth.backends.pipeline.user.update_user_details' ) Ekleme, çıkarma yapabiliyorsunuz. http://django-social-auth.readthedocs.org/en/latest/pipeline.html
Platform Verilerini NoSQL'e yazma Hangi Veriler? Kullandığınız OAuth destekli site size ne sunuyorsa + siz ne istiyorsanız. Genelde settings.py altındaki BACKEND_EXTENDED_PERMISSIONS adlı bir listede tutuyorsunuz: BEHANCE_EXTENDED_PERMISSIONS = ['email', ..] FACEBOOK_EXTENDED_PERMISSIONS = ['email', 'user_birthday'] SOUNDCLOUD_EXTENDED_PERMISSIONS = [.., ..] STACKOVERFLOW_EXTENDED_PERMISSIONS = [.., ..] .. Detaylar: http://django-social-auth.readthedocs.org/en/latest/backends/index.html
Platform Verilerini NoSQL'e yazma Postgresql - Hstore Postgresql veritabanında tek bir sütunda hash tipi veri tutarak NoSQL'in avantajlarından faydalanmanızı sağlar. Hstore desteği için CREATE EXTENSION hstore; diyerek hstore desteğini aktif hale getirmeniz gerekmektedir. Daha detaylı bilgi için: http://neilmiddleton.com/the-wonders-of-hstore/
Platform Verilerini NoSQL'e yazma Kaynaklar • Lighting talk on django-social-auth by Daniel Greenfield: http://www.slideshare.net/pydanny/lighting-talk-on-djangosocialauth • OAuth article on wikipedia: http://en.wikipedia.org/wiki/OAuth