Jika saya secara terprogram membuat pengguna uji Facebook, login_url
untuk pengguna baru tidak berfungsi. Mengambil login_url mengembalikan kesalahan 404.
Contoh sederhana (dengan Python). Dua baris terakhir adalah tempat munculnya masalah:
import requests
from urlparse import parse_qs
APP_ID = "<Facebook App ID>"
APP_SECRET = "<Facebook Client Secret>"
# Get app access token - this works
response = requests.get('https://graph.facebook.com/oauth/access_token',
params={'grant_type': "client_credentials",
'client_id': APP_ID, 'client_secret': APP_SECRET})
app_access_token = parse_qs(response.content)['access_token'][0]
# Create test user - this works
response = requests.post('https://graph.facebook.com/%s/accounts/test-users' % APP_ID,
data={'access_token': app_access_token, 'installed': "true"})
test_user = response.json()
login_url = test_user['login_url']
print login_url # http://developers.facebook.com/checkpoint/test-user-login/...
# Get cookied for login - see https://stackoverflow.com/a/5370869/647002
session = requests.Session()
session.get("https://www.facebook.com/", allow_redirects=True)
# Login test user - THIS FAILS
response = session.get(login_url)
print response.status_code # 404
Orang lain telah mencatat bahwa Anda harus pertama-tama ambil beranda Facebook sebelum login_url pengguna uji akan berfungsi. Kami mengalami masalah yang sama, dan saya telah menyertakan solusi di atas tanpa hasil. [Edit: menambahkan parameter kueri _fb_noscript=1
, diperlukan mulai pertengahan tahun 2015 untuk klien pengujian non-JavaScript.] [Edit 8/2017: sekarang dihapus _fb_noscript=1
; tidak lagi diperlukan, dan menyetel cookie noscript
yang membuat beberapa permintaan autentikasi FB selanjutnya menghasilkan 500.]
Saya juga mencoba membuka login_url langsung di browser:
- Jika saya belum masuk ke Facebook, saya mendapatkan halaman Facebook 404 yang umum.
- Jika saya sudah masuk ke akun pengembang saya, Facebook memperingatkan bahwa saya akan masuk sebagai pengguna uji platform, dan kemudian mengizinkan saya masuk ke akun pengguna uji.
Poin terakhir itu sepertinya mengonfirmasi bahwa pengguna uji dibuat dengan benar dan saya memiliki login_url yang benar. Namun tentu saja, hal itu tidak membantu pengujian otomatis. (Kami tidak ingin menjalankan pengujian dengan masuk ke akun pengembang saya.)
Apakah ada cara lain login_url pengguna uji dimaksudkan untuk digunakan untuk pengujian otomatis?