为django提供简单的twitter集成。

ecl_twitter的Python项目详细描述


ECL推特

ecl twitter是一个很棒的python 2.7+的twitter库。它使推特 api是一个很好的工具,django集成也很好。要了解更多信息,请阅读 开始!

如果您有问题需要报告或功能请求,请将其添加到我们的 issue tracker

安装

ecl twitter位于pypi上,因此我们建议通过pip

$ pip install ecl-twitter

配置

如果您想将ecl twitter用于独立应用程序(例如 你写的脚本是为了下载你的tweets),你需要设置 环境变量TWITTER_KEYTWITTER_SECRETTWITTER_REDIRECT_URL使用适合您twitter的值 应用程序:

export TWITTER_KEY="Gmxb5Rh7gpOpzunQ7SQcOA"
export TWITTER_SECRET="irhZg1W5NO2r7M9IRwhjHKpzKPjJ3HXc6RYCbrM0"
export TWITTER_REDIRECT_URL="http://example.com/oauth/complete"

如果您只对与django集成感兴趣,请阅读django。

身份验证

我们已经使身份验证变得非常简单。老实说,可能太简单了。

>>> from ecl_twitter import Twitter
>>> twitter = Twitter()
>>> url, token, secret = twitter.generate_authorization()
>>> url
https://api.twitter.com/oauth/authorize?oauth_token=XXX

在浏览器中打开此url并允许应用程序后,将重定向到带有pin的页面。这是您的verifier。:

>>> twitter = Twitter(token, secret)
>>> data = twitter.oauth.access_token(oauth_verifier=verifier)
>>> data
<Objectifier#dict oauth_token_secret=unicode user_id=unicode oauth_token=unicode screen_name=unicode>

恭喜你,你已经通过了twitter的认证(告诉你这很简单)。data是一个Objectifier对象,它应该包含您的令牌、机密、用户ID和屏幕名称。

要调用API,请使用新获取的访问令牌和访问令牌密钥:

>>> twitter = Twitter(data.oauth_token, data.oauth_token_secret)
>>> tweets = twitter.statuses.user_timeline()
>>> tweets
<Objectifier#list elements:20>

所以,是的。就这样。多产多产。

与django

集成

我们上面做的很简单。对于django项目,我们已经让它变得更加简单。在您的视图文件中:

from django.contrib.auth import authenticate, login
from django.http import HttpResponseRedirect

from ecl_twitter import twitter_begin, twitter_callback

from .models import User

# ...

@twitter_begin
def oauth_twitter_begin(request):
    pass

@twitter_callback
def oauth_twitter_complete(request, data):
    user, _ = User.objects.get_or_create(screen_name=data.screen_name, defaults={
        'access_token': data.oauth_token,
        'access_token_secret': data.oauth_token_secret })
    user = authenticate(id=user.id)
    login(request, user)
    return HttpResponseRedirect(reverse('home'))

将这些值添加到设置中。:

# The User model that you'll be using to authenticate with Twitter.
PRIMARY_USER_MODEL = "app.User"

AUTHENTICATION_BACKENDS = (
    # ...
    'ecl_twitter.backends.TwitterAuthBackend',
)

TWITTER_KEY = "Gmxb5Rh7gpOpzunQ7SQcOA"
TWITTER_SECRET = "irhZg1W5NO2r7M9IRwhjHKpzKPjJ3HXc6RYCbrM0"
TWITTER_REDIRECT_URL = "http://example.com/oauth/complete"

然后将以上视图映射到您的url.py:

# ...

urlpatterns = patterns('app.views',
    # ...
    url(r'^oauth/twitter/begin$', 'oauth_twitter_begin'),
    url(r'^oauth/twitter/complete$', 'oauth_twitter_complete'),
)

你完了。哦,您可能还需要添加一些字段来存储 用户模型中与twitter相关的字段。

索引和表格

  • genindex
  • 修改
  • 搜索

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

推荐PyPI第三方库


热门话题
相对于框架java窗口的鼠标位置错误   Java 8流peek api   java将数据附加到文件中   java使用ExoPlayer 2.8播放播放列表中的特定文件   JavaSpring国际化:如何动态设置语言环境值   java如何在mysql中实现两个表之间的两个关联   java在gradle可执行jar文件中包含运行时参数   surefire插件中的java maven多套测试套件   java试图理解堆分析以确定内存泄漏或所需的大量内存   java识别字符串有数字   数组如何解决错误“java.lang.ArrayIndexOutOfBoundsException:5”   java Swt文件对话框选择的文件太多?   java此登录代码易受SQL注入攻击吗?   Java[3]中的文件<identifier>预期编译错误   java如何在spring webflux中发送列表   jar中未找到java文件异常   如何在java中合并2D数组?   java如何评测本机JNI库