liboauth2 是一个轻量级的oauth2 python客户端。
liboauth2 只是实现oauth2协议,并没有实现任何第三方oauth2认证。
如果需要实现第三登录,可以看pysns
支持四种认证方式
一、Authorization Code授权码方式
二、Implicit Grant隐式授权
三、Resource Owner Password Credentials
四、Client Credentials客户端证书授权
安装
easy_install liboauth2
腾讯微博演示
# -*- coding: utf-8 -*- import liboauth2 import urllib from flask import Flask, redirect, request CLIENT_ID = 'you client id' CLIENT_SECRET = 'you client secret' client = liboauth2.Client(CLIENT_ID, CLIENT_SECRET) REDIRECT_URI = 'http://localhost:5000/callback/' AUTH_URI = 'https://open.t.qq.com/cgi-bin/oauth2/authorize' ACCESS_TOKEN_URL = 'https://open.t.qq.com/cgi-bin/oauth2/access_token' app = Flask(__name__) app.debug = True @app.route('/') def home(): # get auth url url = client.get_auth_url(AUTH_URI, REDIRECT_URI) return redirect(url) @app.route('/callback/') def callback(): # get access token params = {'code': request.args['code'], 'redirect_uri': REDIRECT_URI} resp = client.get_access_token(ACCESS_TOKEN_URL, liboauth2.GRANT_TYPE_AUTH_CODE, params) # print resp def urldecode(values): ret = {} for s in values.split('&'): if s.find('=') > -1: k, v = map(urllib.unquote, s.split('=')) ret[k] = v #ret.setdefault(k, []).append(v) return ret data = urldecode(resp['result']) # set access token and query user info client.set_access_token(data['access_token']) params = { 'oauth_consumer_key': CLIENT_ID, 'openid': data['openid'], 'clientip': request.remote_addr, 'oauth_version': '2.a', } resp = client.fetch('http://open.t.qq.com/api/user/info', params) return str(resp['result']) if __name__ == '__main__': app.run(host='localhost', port=5000)
我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se
URI 方法 URI() string 返回当前客户端使用的服务器地址。 SetURI 方法 SetURI(uri string) 设置当前客户端使用的服务器地址。如果你想要设置多个服务器地址,请使用 SetURIList 方法代替该方法。 URIList 方法 URIList() []string 返回当前客户端可使用的服务器地址列表。 SetURIList 方法 SetURIList(uriL
客户端事件通过 SetEvent 方法进行设置。 客户端事件有两个,它们分别定义为: type onErrorEvent interface { OnError(name string, err error) } type onFailswitchEvent interface { OnFailswitch(Client) } 因为 go 语言不需要显式实现接口的特点,所以这两
创建客户端有两种方式,一种是直接使用特化的构造器函数,另一种是使用工厂构造器函数。 第一种方式返回的是具体的客户端结构体指针对象,第二种方式返回的是客户端接口对象。 使用特化的构造器函数创建客户端 特化的构造器函数有下面几个: func NewHTTPClient(uri ...string) (client *HTTPClient) func NewTCPClient(uri ...string
客户端下载地址: windows 32位安装包 windows 64位安裝包 mac 安装包 Android App iOS App
问题 你想使用网络上提供的服务。 解决方案 创建一个基本的 TCP 客户机。 在 Node.js 中 net = require 'net' domain = 'localhost' port = 9001 connection = net.createConnection port, domain connection.on 'connect', () -> console.log
客户端调用服务端 服务端的proto文件copy到客户端 获取grpc客户端 //sample 为服务名称 var client = await provider.FindGrpcClient<RpcTest.RpcTestClient>("sample"); 调用服务方法 var result = await client.SayHelloAsync(new HelloRequest() {
Disque 在源码中附带了命令行客户端程序 disque , 通过这个程序可以以交互的形式向 Disque 发送命令: $ ./disque 127.0.0.1:7711> PING PONG 另外你也可以使用以下编程语言的客户端来操作 Disque : Ruby 客户端 https://rubygems.org/gems/disque Java 客户端 https://github.com/x