通过OAuth2.0 获取授权访问SF 用户数据

站长资讯

创建应用程序

  1. 新建应用程序

     

访问示例(Python+django)

  1. 环境准备:

  2. 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})

原文地址:https://www.cnblogs.com/1994july/p/12003643.html

时间: 2024-10-21 03:02:46

通过OAuth2.0 获取授权访问SF 用户数据的相关文章

***微信公众平台开发: 获取用户基本信息+OAuth2.0网页授权

本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称.头像.性别.国家.省份.城市.语言.本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息,而无需模拟登录. 在本文中,特别要注意的是有两个不同的Access Token,他们产生的方式不一样,一种是使用AppID和AppSecret获取的access_token,一种是OAuth2.0授权中产生的access_token,方倍工作室分别称为全局Access Token和授权Access

C#微信公众号开发之网页授权oauth2.0获取用户基本信息(二)

C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一) 中讲解了如果通过微信授权2.0snsapi_base获取已经关注用户的基本信息,然而很多情况下我们经常需要获取非关注用户的信息,方法如下: 第一步和之前讲的一样:获取code,但是scope使用方法是snsapi_userinfo; 第二步,根据code获取openid和access_token(此处的access_token是通过网页授权code换取的不是我们之前讲的全局的票据),代码: 1 /// <summary> 2

微信公众平台开发(71)OAuth2.0网页授权

微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息 作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一.什么是OAuth2.0 官方网站:http://oauth.net/   http://oauth.net/2/ 权威定义:OAuth is An open protocol to allow secure

Force.com微信开发系列(七)OAuth2.0网页授权

OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站上存储的私密资源(如用户个人信息.照片.视频.联系人列表),而无须将用户名和密码提供给第三方应用.本文将详细介绍OAuth协议以及在微信里的具体实现. OAuth2.0协议介绍 OAuth2.0是OAuth协议的下一版本,但不向后兼容OAuth 1.0. OAuth 2.0关注客户端开发者的简易性,同时为Web应用,桌面应用和手机,和起居室设备提供专门的认证流程. OAuth2.0允许用户提供一个令牌,而不是用户

使用Owin中间件搭建OAuth2.0认证授权服务器

前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OAuth2.0服务器,对于涉及的Asp.Net Identity(Claims Based Authentication).Owin.OAuth2.0等知识点已有基本了解.若不了解,请先参考以下文章: MVC5 - ASP.NET Identity登录原理 - Claims-based认证和OWIN

(转)微信公众平台开发 OAuth2.0网页授权

微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息 作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一.什么是OAuth2.0 官方网站:http://oauth.net/   http://oauth.net/2/ 权威定义:OAuth is An open protocol to allow secure

Spring Cloud 微服务中搭建 OAuth2.0 认证授权服务

在使用 Spring Cloud 体系来构建微服务的过程中,用户请求是通过网关(ZUUL 或 Spring APIGateway)以 HTTP 协议来传输信息,API 网关将自己注册为 Eureka 服务治理下的应用,同时也从 Eureka 服务中获取所有其他微服务的实例信息.搭建 OAuth2 认证授权服务,并不是给每个微服务调用,而是通过 API 网关进行统一调用来对网关后的微服务做前置过滤,所有的请求都必须先通过 API 网关,API 网关在进行路由转发之前对该请求进行前置校验,实现对微服

微信公众平台oauth2.0网页授权

本篇文章你将学到:在自己做的微信网站里,利用oauth2.0网页授权接口获取用户的信息(openid,姓名,性别,地区,头像等).如大转盘等游戏记录哪个微信用户获得什么奖品.H5等小游戏需要把分数与对应用户捆绑在一起等网页应用. 微信公众平台oauth2.0网页授权能干什么 它是在自己做的网站中不用用户登录来获取微信用户相关信息的,进而实现相关业务. 说明与注意 1.网页授权分为两种, 一种为只获取openid  (基本授权 snsapi_base) 一种为获取用户全部信息 (高级授权 snsa

微信OAuth2.0网页授权接口

微信OAuth2.0网页授权接口 微信OAuth2.0网页授权接口的thinkphp实现版本号.主要实现了oauth网页受权,以及部分其它接口. 用法 为什么用OAuth2.0受权? 通过OAuth2.0受权的网页将会获取到打开者的微信信息.甚至包含微信昵称.头像等实用的数据,开发人员们能够凭此设计出很多其它更丰富的页面应用,比方近期一直非常火爆的红包类活动.除此之外还有个额外的优点,就是能够控制页面在非微信浏览器中无法打开,能够降低代码被人窥窃的风险. 那么红包类活动是怎样使用OAuth2.0