将Django支持的站点连接到社交网络和其他在线服务。

django-connected的Python项目详细描述


Latest VersionDownloadsLicense

快速启动

  1. 安装django-connected

    pip install django-connected
    
  2. connected_accounts添加到INSTALLED_APPS

    INSTALLED_APPS = (
        ...
        'connected_accounts',
        'connected_accounts.providers',
        ...
    )
    
  3. 同步数据库(如果使用的是django 1.6.x,则要求south>;=1.0.1):

    python manage.py migrate
    

预览

(请单击缩略图查看更大的图像)

http://mishbahr.github.io/django-connected/images/small/django_connected_01.jpeghttp://mishbahr.github.io/django-connected/images/small/django_connected_02.jpeghttp://mishbahr.github.io/django-connected/images/small/django_connected_03.jpeghttp://mishbahr.github.io/django-connected/images/small/django_connected_04.jpeg

支持的提供程序

http://mishbahr.github.io/django-connected/images/oauth_logo.png
  • 比特(OAuth2)
  • 研究(OAuth2)
  • Facebook(OAuth2)
  • 谷歌(OAuth2)
  • Instagram(OAuth2)
  • MailChimp(OAuth2)
  • 推特(OAuth)
  • 更多…(即将推出)

配置

大多数提供商要求您注册一个所谓的api客户端或应用程序,其中包含客户端id和api机密。

在提供者一侧创建oauth应用程序时,请特别注意回调url(有时也称为重定向url)。

使用表单的回调url:

http://example.com/admin/connected_accounts/account/callback/<provider_name>/

研究

在这里注册您的oauth2应用程序:http://disqus.com/api/applications/

CONNECTED_ACCOUNTS_DISQUS_CONSUMER_KEY = '<disqus_client_id>'
CONNECTED_ACCOUNTS_DISQUS_CONSUMER_SECRET = '<disqus_client_secret>'

默认情况下,readwrite作用域已启用

CONNECTED_ACCOUNTS_DISQUS_SCOPE = ['read', 'write', ]

作用域值的可用权限是readwriteemailadmin

facebook

可以通过在https://developers.facebook.com/apps创建应用程序来获取密钥和密钥

CONNECTED_ACCOUNTS_FACEBOOK_CONSUMER_KEY = '<facebook_consumer_key>'
CONNECTED_ACCOUNTS_FACEBOOK_CONSUMER_SECRET = '<facebook_consumer_secret>'

默认情况下,emailpublic_profileuser_friends已启用,使用其他权限的应用程序需要Facebook进行审阅:

CONNECTED_ACCOUNTS_FACEBOOK_SCOPE = ['email', 'public_profile', 'user_friends']

使用FACEBOOK_AUTH_PARAMS将其他参数传递给facebook api:

CONNECTED_ACCOUNTS_FACEBOOK_AUTH_PARAMS = {'auth_type': 'reauthenticate'}

谷歌

google提供商是基于oauth2的。创建一个google应用程序,通过开发人员控制台获取密钥和机密https://console.developers.google.com/

CONNECTED_ACCOUNTS_GOOGLE_CONSUMER_KEY = '<google_client_id>'
CONNECTED_ACCOUNTS_GOOGLE_CONSUMER_SECRET = '<google_client_secret>'

默认情况下,profileemail作用域已启用:

CONNECTED_ACCOUNTS_GOOGLE_SCOPE = ['profile', 'email']

默认情况下,已启用脱机访问请求:

CONNECTED_ACCOUNTS_GOOGLE_AUTH_PARAMS = {'access_type': 'offline'}

有关详细信息,请参见https://developers.google.com/identity/protocols/OAuth2WebServer#offline

推特

您可以通过https://apps.twitter.com/app/new在Twitter上注册应用程序

CONNECTED_ACCOUNTS_TWITTER_CONSUMER_KEY = '<twitter_consumer_key>'
CONNECTED_ACCOUNTS_TWITTER_CONSUMER_SECRET = '<twitter_consumer_secret>'

instagram

在此处注册您的oauth应用程序:https://instagram.com/developer/clients/register/

CONNECTED_ACCOUNTS_INSTAGRAM_CONSUMER_KEY = '<instagram_client_id>'
CONNECTED_ACCOUNTS_INSTAGRAM_CONSUMER_SECRET = '<instagram_client_secret>'

用法

通过在自定义模型上定义一个(或多个)AccountField,您可以利用自定义应用程序中连接的帐户。

快速启动

您需要在要使用的模型上定义accountfield:

from django.db import models
from connected_accounts.fields import AccountField

class MyModel(models.Model):
    account = AccountField('twitter')

    [...]

AccountField将字符串作为第一个参数,该参数将用于限制给定字段可用帐户的选择。

管理集成

为在应用程序的管理中提供具有^ {TT16}$的模型的管理支持,您需要使用MIXIN ^ {TT19}$以及ModelAdmin。注意在类定义中,ConnectedAccountAdminMixin必须在modeladmin之前:

from django.contrib import admin
from connected_accounts.admin import ConnectedAccountAdminMixin

from myapp.models import MyModel


class MyModelAdmin(ConnectedAccountAdminMixin, admin.ModelAdmin):
    pass

admin.site.register(MyModel, MyModelAdmin)

管理预览

http://mishbahr.github.io/django-connected/images/small/django_connected_05.jpeg

使用django-connected

的包

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在Gomoku javafx游戏中启用回合转换   java Akka ask onComplete呼叫两次   类实现可序列化时的java NotSerializableException   java在不同情况下使用不同的Hibernate用户类型   使用Jena库从Java中的RDF网页提取URI的xml解析   即使在将github证书添加到%java_HOME%之后,java SSLHandshakeException仍然存在异常   Android Studio Java TelephonyManager错误:非静态方法   java树的23个节点浪费了什么信息?   java如何使用JAXB读取XML文件?   java Jdbc列索引超出范围   java如何在Spring忽略基本包的情况下扫描整个类路径中的组件?   用于动态创建Swing组件的java侦听器   Java方法在嵌套类中不起作用   java在JSF中使用POST而不是GET重定向异地页面   文本向txt文件添加单词列表   java如何将复选框信息从视图发送到Thymeleaf中的控制器?   用于用户提示的java字符串输入   性能java编译器能否优化循环以尽早返回?   java为什么位集不可编辑?