2012-01-21 12 views
14

Başlık, sorunun büyük çoğunluğuna değiniyor; ancak, Facebook kimlik doğrulamalı kullanıcıların kendi sitemin API'sine erişim kazanmalarına dair beynimin etrafına sarılmakta zorlanıyorum.Oturum açma/hesap oluşturma için Facebook Connect'i kullanırken kendi sitemin API'siyle nasıl kimlik doğrulaması yapabilirim?

Kullanıcı FB ile kimliği doğruladıktan sonra Kullanıcı hakkında biraz bilgi alabilirim, ancak kimlik doğrulama için kendi güvenli API sunucumla birlikte geçmek için API anahtarı veya kullanıcı adı/parola yok.

Birkaç ilgili sorular bulundu, ancak hiçbir şey ideal cevapları gibi görünüyor ettik:

Herhangi yardım büyük takdir edilecektir!

+1

'Kendi siteleriniz API'sı' derken, bir tarayıcı ile web siteniz arasındaki aramaları doğrulamak anlamına mı geliyorsunuz, yoksa 3. şahıslar ve mobil cihazlar gibi herhangi birinin/herkesin tüketebileceği kendi api anlamına mı geliyorsunuz? – spotman

+3

@spotman - Sadece bir dick olmak yerine aslında yardımcı olduğunuz için teşekkürler. Sitem veritabanı bağlantısı yerine içerik almak için kendi API'mı kullanıyor. Ben onları FB Connect ile web tarafında doğrulamaktayım, ancak daha sonra kendi API'm ile dönüp kimliklerini doğrulamak için en iyi yöntem için avlanıyorum. Temel Yetkilendirme yapıldı, ancak FB Connect kullanıcılarının kimlik doğrulaması yapacak şifreleri yok. Tekrar teşekkürler. – gstjohn

cevap

10

Kullanıcılarınızı Facebook ile kimlik doğrulaması yaptığınız için, kullanıcı hakkında yeterli bilginiz var. bir access_token ve expire parametreyi alırsınız:

olursa olsun authentication flow arasında size

ADIM 1. edeceğiz kullanıyor. Büyük olasılıkla, user_id'u da talep ettiniz (JS-SDK'yi kullanıyorsanız, bunun çoğunu ele alacaktır).

ADIM 2: bir karma dizesi, bu bilgi (access_token, & user_idexpire) kapsüllemek, ör mimic Facebook signed_request biçimi.

# 3 ADIM:/şifresini, API son noktadaki senin karma dize çözmek ve expire doğrulamak:

https://mydomain.com/apis/getUserSecretData?fb_oauth=my_hashed_string&vars=my_other_vars 

ADIM # 4: Kendi API çağrıları bu karma dize göndermek parametresi ve access_token'un süresi dolduysa, yeni bir tane istemeniz ve API çağrınızı tekrarlamanız gerekir.

+1

Gerçekten bunu seviyorum! Çok yardımcı olduğunuz için teşekkürler. Bir takip sorusu: 4. Adımdan sonra, API son noktamın, istemcinin geri kalan kısmı için kullanabileceği bir API anahtarını döndürmesi güvenli midir yoksa tüm isteklerimi bir sign_request dosyasına koymalı mıyım? – gstjohn

+1

Sorun, kötü amaçlı bir kullanıcının uygulamanızı el ile çözmesi ve isteği imzalamak için kullanılan anahtarı almasıdır. Bu nedenle, kullanıcı kimliğini authtoken'a karşı doğrulamadığınız için herhangi bir auth jetonunu rasgele bir kullanıcıyla birlikte kullanabilirler. Bu uygulama bir mobil uygulama olduğunda bir sorun daha fazladır, çünkü derlenebilmesi kolaydır. Bir web uygulaması için çok önemli değil çünkü şifreleme anahtarınız Web sunucusunda güvenli bir şekilde saklanacaktır.Bu soru, http://stackoverflow.com/questions/4817991/facebook-connect-to-authenticate-on-a-personal-api adresinden gelen authtoken'a karşı kullanıcı kimliğinin nasıl doğrulanacağını gösterir. –

İlgili konular