通过OAuth2.0 获取授权访问SF 用户数据
站长资讯:
创建应用程序
新建应用程序

访问示例(Python+django)
环境准备:

index.html 两种方式:
- 方式一:采用由用户授权,调用者无需知道SF的用户名与密码
- 方式二:直接通过用户名密码获取授权
方式一:需要用户授权<br/>
<a href="https://login.salesforce.com/services/oauth2/authorize?response_type=code&client_id=xxxx&redirect_uri=http://localhost:8000/sfapp/callBack&state=userAuthor&prompt=consent">获取Code</a><br/><br/> 方式二:使用密码方式<br/>
<a href="/sfapp/pwdOAuth">Username-Password OAuth</a><br/><br/> 方式三:刷新<br/>
<a href="/sfapp/refreshToken">refreshToken</a><br/><br/>
方式一:需要用户授权
当用户,点击“获取Code” 时,先弹出SF 登录,然后弹出是否允许访问,当允许后,SF 回调将code放在回调URL后 http://localhost:8000/xxx?code=xxxxxxxxxxxxx
然后用Code 再调用SF 授权接口,换取Access Token
有了Access Token,调用查询接口,查询客户
该方式常用于一些SF工具,需要访问Org数据

返回数据结构如下:

有了access_token 就能访问SF 数据(前提在创建App时给了授权)

代码示例
def callBack(request):
#1 获取Code,从GET 请求中取code
code = request.GET['code']
# 自定义标识字段,SF 按原样返回
state = request.GET['state']
# 方式1:先用户授权,取的code 再通过Code 获取 access_token
head = {
'code':code,
'grant_type':'authorization_code',
'client_id':'',
'redirect_uri':'http://localhost:8000/sfapp/callBack',
'client_secret':''
}
r = requests.post('https://login.salesforce.com/services/oauth2/token', data=head)
request.session['sfInfo'] = r.json()
return render(request, 'sfapp/callBack.html', {'result': request.session['sfInfo']})
def getAccountList(request):
url = request.session.get('sfInfo').get('instance_url')+ '/services/data/v44.0/query/?q=SELECT name,Id from Account'
auth = {'Authorization': 'Bearer %s'%(request.session.get('sfInfo').get('access_token'))}
r = requests.get(url, headers = auth)
result = r.json()
records = result['records']
return render(request, 'sfapp/accountList.html', {'records': records})
方式二:通过用户名与密码授权
- 该方式只需要调用一次,通过用户名与密码换取Access Token
- 该方式常用于系统api集成
def pwdOAuth(request):
head = {
'grant_type': 'password',
'client_id': '',
'redirect_uri': 'http://localhost:8000/sfapp/callBack',
'client_secret': '',
'username':'',
'password':''
}
url = 'https://login.salesforce.com/services/oauth2/token'
r = requests.post(url, data=head)
result = r.json()
request.session['sfInfo'] = result
return render(request, 'sfapp/callBack.html', {'result': request.session['sfInfo']})
Refresh Token
当授权过期后,通过refresh token 获取新的Access Token
如果采用密码方式,无refresh token,在方式一中才有

通过refresh token 获取新的Access Token的返回时无,refresh token

def refreshToken(request):
rt = request.session.get('sfInfo').get('refresh_token')
head = {
'grant_type': 'refresh_token',
'refresh_token':rt,
'client_id': '',
'redirect_uri': 'http://localhost:8000/sfapp/callBack',
'client_secret': '',
'format':'json'
}
url = 'https://login.salesforce.com/services/oauth2/token'
r = requests.post(url, data=head)
result = r.json()
request.session['sfInfo'] = result
return render(request, 'sfapp/callBack.html', {'result': result})
通过OAuth2.0 获取授权访问SF 用户数据的更多相关文章
- Spring Security OAuth2.0认证授权五:用户信息扩展到jwt
历史文章 Spring Security OAuth2.0认证授权一:框架搭建和认证测试 Spring Security OAuth2.0认证授权二:搭建资源服务 Spring Security OA ...
- Spring Security OAuth2.0认证授权六:前后端分离下的登录授权
历史文章 Spring Security OAuth2.0认证授权一:框架搭建和认证测试 Spring Security OAuth2.0认证授权二:搭建资源服务 Spring Security OA ...
- ***微信公众平台开发: 获取用户基本信息+OAuth2.0网页授权
本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称.头像.性别.国家.省份.城市.语言.本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息, ...
- C#微信公众号开发-高级接口-之网页授权oauth2.0获取用户基本信息(二)
C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一) 中讲解了如果通过微信授权2.0snsapi_base获取已经关注用户的基本信息,然而很多情况下我们经常需要获取非关注用户的信息,方法 ...
- 微信公众平台开发—利用OAuth2.0获取微信用户基本信息
在借鉴前两篇获取微信用户基本信息的基础下,本人也总结整理了一些个人笔记:如何通过OAuth2.0获取微信用户信息 1.首先在某微信平台下配置OAuth2.0授权回调页面: 2.通过appid构造url ...
- 用Chrome查看微信访问需要OAuth2.0网页授权的页面
在PC浏览器打开某网站页面提示页面错误,是因为进行了OAuth2.0网页授权 有以下限制, 1.必须在微信打开 2.微信页面授权 其中第一步比较容易实现,修改下ua(user-agent),让其携带“ ...
- 微信公众平台开发(71)OAuth2.0网页授权
微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息 作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使 ...
- Force.com微信开发系列(七)OAuth2.0网页授权
OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站上存储的私密资源(如用户个人信息.照片.视频.联系人列表),而无须将用户名和密码提供给第三方应用.本文将详细介绍OA ...
- 使用Owin中间件搭建OAuth2.0认证授权服务器
前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OA ...
随机推荐
- Flink on yarn以及实现jobManager 高可用(HA)
on yarn https://ci.apache.org/projects/flink/flink-docs-release-1.8/ops/deployment/yarn_setup.html f ...
- 实验吧-杂项-MD5之守株待兔(时间戳&python时间戳函数time.time())
其实也有点蒙圈,因为从没做过和时间戳有关的题. 打开网站,将系统密钥解密得到一串值,而自己的密钥解密是空的,既然说是要和系统匹配,就把解密得到的值以get方式送出去. 但是发现还是在自己的密钥也发生了 ...
- ACM-Checker Challenge
题目描述:Checker Challenge 1000(ms) 10000(kb) 20 / 90 Examine the 6x6 checkerboard below and note tha ...
- java基础源码 (1)--String类
这个是String类上面的注释,我用谷歌翻译翻译的,虽然有点语法上的问题,但是大概都可以翻译出来 /** * The {@code String} class represents character ...
- Maven:java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
直接参考前面一篇文章中间介绍的第2种方法即可:Maven:sun.security.validator.ValidatorException: PKIX path building failed: s ...
- VM虚拟机安装windows7操作系统
一.创建虚拟机 1. 新建虚拟机 2. 默认配置,点击下一步 3. 稍后安装操作系统,下一步 4. 选择操作系统,32位选择windows 7,64位选择windows 7 x64,点击下一步 5. ...
- PageHelper使用
之前我们整合过SSM框架,可以查询数据库数据,项目中一般不会全部查询所有数据,为了美观和性能,都是采用分页形式查询数据 一:pom.xml导入pagehelper.jar <!-- https: ...
- python 奇淫技巧之自动登录 哔哩哔哩
前言 嘿,各位小伙伴好呀,今天要带来点什么干货呢,就从我的实际开发中来给大家带来一个案例吧,如何自动登录 哔哩哔哩 接到老大通知,让我自动写一个自动登录 哔哩哔哩 的脚本,我当然是二话不说直接开怼,咱 ...
- Swift实现iOS录音与播放音频功能
作用AVPLayer:可以用来播放在线及本地音视频AVAudioSession:音频会话,主要用来管理音频设置与硬件交互使用时需要导入 #import <AVFoundation/AVFound ...
- grep 使用方法 --rn使用
生产环境中,我们经常会碰到一个报错但是却不知道配置文件的路径在哪里,这时候用rn就能轻松解决 [root@localhost ~]# grep -rn "搜索的内容" 路径