salesforce使用用户代理OAuth流和商店访问令牌对其他组织的组织进行身份验证?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (128)
  1. 我已将已在org 2中创建的应用与已启用OAuth相关联。
  2. 我在org1中使用OAuth2.0用户代理工作流,我有闪电应用程序。
  3. 点击闪电组件页面中的按钮(名为auth target org)后,
  4. window.open(endpturl, '_自'); var currLoc = window.location.href; 警报('Curr Loc is:'+ currLoc); //打印我点击按钮的URL(名为auth target org)。预计此语句将在步骤7之后执行。因此无法捕获访问令牌。
  5. 重定向到salesforce授权/登录页面。
  6. 输入用户凭证 - >单击允许访问。
  7. 重定向到根据连接的应用程序配置的回调URL https://business-momentum-162-dev-ed.cs2.my.salesforce.com/services/oauth2/success#access_token=abc&instance_url=https%3A%2F%2Fdream-innovation -4602-dev-ed.cs40.my.salesforce.com&ID = HTTPS%3A%2F%2Ftest.salesforce.com%2Fid%2F00D540000009LzUEAU%2F00554000000zjC5AAI&issued_at = 1531980498349&签名= ABC&范围= ID + API&token_type =承载

但是我无法在步骤7之前执行的步骤4中捕获访问令牌因此无法捕获访问令牌。如果有获取/捕获访问令牌的方法,请告诉我。

    client side controller code (**using window object**):
    ({ AuthTargetOrg : function (component, event, helper) {

    var endpturl = 'https://test.salesforce.com/services/oauth2/authorize?response_type=token&client_id=abc123&redirect_uri=https%3A%2F%2Fbusiness-momentum-162-dev-ed.lightning.force.com%2Fservices%2Foauth2%2Fsuccess';

    window.open(endpturl,'_self');
    var currLoc = window.location.href;
    alert ('Curr Loc is:  ' + currLoc); //  prints home page URL from where I clicked "auth target org" button, rather this statement expected to execute after step 7.
   )}

此致,PJS

提问于
用户回答回答于

我相信你需要使用Apex来处理Oauth舞蹈的重定向。我自己一直在努力解决这个问题,问题是在闪电组件中你不能直接向salesforce端点调用API,它会抛出各种错误。但我找到了这个代码示例:

https://balkishankachawa.wordpress.com/tag/oauth-with-lightning/

基本上解决方案是使用Apex和Lightning Out。使用Apex从Salesforce身份验证接收重定向,然后可以获取令牌并将其传递回闪电组件。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励