Dengan perkembangan pesat media sosial, semakin banyak laman web dan aplikasi mula menggunakan log masuk sosial untuk memudahkan proses pendaftaran dan log masuk pengguna. Walau bagaimanapun, melaksanakan fungsi tersebut bukanlah mudah. Bagaimana untuk berinteraksi dengan rangkaian sosial melalui protokol OAuth? Bagaimana untuk menggunakan maklumat pengguna yang diperolehi? Bagaimana untuk menangani kebenaran dan keselamatan? Nasib baik, terdapat sambungan aplikasi Python yang sangat baik seperti Flask-Social yang boleh membantu kami mencapai fungsi ini dengan lebih mudah. Artikel ini akan memperkenalkan penggunaan dan prinsip asas Flask-Social.
Mula-mula, kita perlu memasang Flask-Social. Gunakan alat pip untuk memasang dengan cepat:
pip install Flask-Social
Selepas pemasangan selesai, kita perlu mengkonfigurasi Flask-Social dalam projek Flask. Mula-mula memperkenalkannya dalam aplikasi Flask:
from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask.ext.social import Social from flask.ext.social.datastore import SQLAlchemyConnectionDatastore app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db' db = SQLAlchemy(app) app.config['SOCIAL_AUTH_TWITTER_KEY'] = 'your_key' app.config['SOCIAL_AUTH_TWITTER_SECRET'] = 'your_secret' social = Social(app, SQLAlchemyConnectionDatastore(db))
Dalam kod di atas, kami mula-mula memperkenalkan perpustakaan pergantungan yang diperlukan, termasuk Flask, SQLAlchemy dan Flask-Social. Kemudian, kami mentakrifkan aplikasi Flask dan pangkalan data SQLAlchemy, serta URL untuk disambungkan ke pangkalan data. Seterusnya, kami menetapkan kunci dan rahsia untuk pengesahan Twitter digunakan di sini sebagai contoh, maklumat dari platform media sosial lain juga boleh digunakan. Akhir sekali, mulakan contoh Social
melalui kelas social
dan sambungkannya dengan kelas SQLAlchemyConnectionDatastore.
Dengan tetapan di atas, kami kini boleh menggunakan Flask-Social untuk menambah fungsi log masuk sosial. Katakan kami ingin menambah log masuk Twitter dalam aplikasi kami, kami boleh menggunakan kod berikut:
from flask import Flask, request, redirect, url_for, render_template from flask_sqlalchemy import SQLAlchemy from flask.ext.social import Social from flask.ext.social.datastore import SQLAlchemyConnectionDatastore app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db' app.secret_key = 'secret' db = SQLAlchemy(app) app.config['SOCIAL_AUTH_TWITTER_KEY'] = 'your_key' app.config['SOCIAL_AUTH_TWITTER_SECRET'] = 'your_secret' social = Social(app, SQLAlchemyConnectionDatastore(db)) @app.route('/') def home(): return render_template('home.html') @app.route('/login') def login(): return social.twitter.authorize(callback=url_for('auth_twitter', next=request.args.get('next') or request.referrer or None)) @app.route('/auth/twitter') def auth_twitter(): resp = social.twitter.authorized_response() if resp is None: return redirect(url_for('home')) session['twitter_token'] = ( resp['oauth_token'], resp['oauth_token_secret'] ) return redirect(url_for('profile')) @app.route('/profile') def profile(): return render_template('profile.html')
Kod di sini adalah mudah: kami mula-mula menentukan halaman utama, kemudian kami menentukan laluan log masuk, menggunakan fungsi social.twitter.authorize()
Hasilkan halaman log masuk. Seterusnya, kami mengendalikan panggilan balik maklumat log masuk Twitter dan menyimpan token dan rahsia dalam sesi. Akhir sekali, kami menentukan laluan profil untuk memaparkan maklumat pengguna.
Sila ambil perhatian bahawa dalam kod di atas, kami juga mentakrifkan app.secret_key
yang digunakan untuk menjana kunci sesi, yang diperlukan oleh Flask-Social.
Sudah tentu, Twitter bukan satu-satunya platform log masuk sosial yang biasa Sebagai tapak rangkaian sosial pembangun, Github juga sangat popular. Jadi kami menambah log masuk Github pada aplikasi Flask dengan hanya sedikit perubahan, contohnya:
from flask import Flask, request, redirect, url_for, render_template, session from flask_sqlalchemy import SQLAlchemy from flask.ext.social import Social from flask.ext.social.datastore import SQLAlchemyConnectionDatastore app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db' app.secret_key = 'secret' db = SQLAlchemy(app) app.config['SOCIAL_AUTH_GITHUB_KEY'] = 'your_key' app.config['SOCIAL_AUTH_GITHUB_SECRET'] = 'your_secret' social = Social(app, SQLAlchemyConnectionDatastore(db)) @app.route('/') def home(): return render_template('home.html') @app.route('/login') def login(): return social.github.authorize(callback=url_for('auth_github', next=request.args.get('next') or request.referrer or None)) @app.route('/auth/github') def auth_github(): resp = social.github.authorized_response() if resp is None: return redirect(url_for('home')) session['github_token'] = ( resp['access_token'], '' ) return redirect(url_for('profile')) @app.route('/profile') def profile(): me = social.github.get('/user') return render_template('profile.html', name=me.data['name'])
Seperti yang anda lihat, cuma ubah suai kunci dan rahsia dan gunakannya dalam kaedah authorize()
dan authorized_response()
social.github
Log masuk sosial berdasarkan Github boleh direalisasikan.
Dengan Flask-Social, kami boleh menambah kefungsian log masuk sosial pada aplikasi Flask kami dengan mudah. Menggunakan Flask-Social, kami boleh terus menggunakan kod Python untuk mengendalikan API rangkaian sosial tanpa perlu berurusan dengan protokol OAuth secara manual. Jika anda ingin menyokong berbilang rangkaian sosial, yang diperlukan hanyalah sedikit pengubahsuaian kod. Dengan operasi yang begitu mudah, anda akan mengurangkan masalah pengguna yang tidak terkira banyaknya dan meningkatkan kesetiaan pengguna dan kelekatan aplikasi anda.
Atas ialah kandungan terperinci Flask-Social: Menambah log masuk sosial pada aplikasi web Python anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!