标签: jsforce

无法使用 dj-rest-auth + django-allauth 登录 Salesforce

我的应用程序有一个 Django 3.1 后端,带有django-allauthdj-rest-auth(积极支持django-rest-auth 的分支)。

我的移动和 Web 前端已经可以通过 REST 使用 Facebook 和 Google 登录。我现在正在尝试将 Salesforce 添加为第 3 种 REST 社交登录方法,但遇到了问题。

我已按照Salesforcedjango-allauth 说明进行操作

  • 使用 id 和 openid 范围(以及其他一些范围)创建了一个 Salesforce Connected App,并将回调 URL 设置为 https://www.mywebdomain.com/accounts/salesforce/login/callback/
  • 在 Django 中创建了一个 SocialApplication,在“Key”字段中使用客户端 ID、密码和登录 URL ( https://login.salesforce.com/ )
  • 在 INSTALLED_APPS 中包含 allauth.socialaccount.providers.salesforce

我一直在使用客户端JSforce在前端启动 Salesforce 身份验证请求,但如果其他方法更简单/更好/等,我愿意接受其他方法。

jsforce.browser.login()在我客户的 JS 代码中运行会打开 Salesforce 登录弹出窗口。输入 Salesforce 登录凭据后,Salesforce 系统重定向到我定义的回调 URL,从而生成一个显示以下文本的页面:

社交网络登录失败
尝试通过您的社交网络帐户登录时发生错误。

该页面地址栏中的 URL 如下所示:

https://www.mywebdomain.com/accounts/salesforce/login/callback/#access_token=00D3t000004QWRm%21ARwAQPfHWiM6jdB43dlyW6qjEw._34mjzGi_Jv6YCXp0QssT.9F9lCge5_YaH8gqTy3Od6SywCs8X9zOGv145SyviBVeGdn0&instance_url=https%3A%2F%2Fna123.salesforce.com&id=https%3A%2F%2Flogin.salesforce.com%2Fid%2F00D3t000004QWRmEAO%2F0053t000008QBetAAG&issued_at=1606802917608&signature=KvxAX0WBCFQYY%2BO25id9%2FXxpbh2q2d2vWdQ%2FFV5FCBw%3D&state=jsforce0.popup.c0ockgct29g&scope=id+api+web+refresh_token+openid&token_type=Bearer
Run Code Online (Sandbox Code Playgroud)

我试图调试,并在我的后台打印错误,但两者auth_error.code并 …

django salesforce django-allauth django-rest-auth jsforce

7
推荐指数
1
解决办法
213
查看次数

Salesforce - unsupported_grant_type:不支持授权类型

我在NestJS ( Typescript ) 应用程序中使用JSforceOAuth2连接到我的Salesforce帐户时遇到问题。

这是我的登录代码:

@Get('salesforce/login/:userId')
  async login(@Req() req, @Res() res, @Param('userId') userId) {
    const user = await this.userService.findById(userId);
    const oauth2 = new OAuth2({
      loginUrl: user.salesforceOauthInformation.loginUrl,
      clientId: user.salesforceOauthInformation.clientId,
      clientSecret: user.salesforceOauthInformation.clientSecret,
      redirectUri: user.configService.salesforceRedirectUri,
    });
    res.redirect(
      oauth2.getAuthorizationUrl({
        scope: 'api full id web refresh_token',
        state: user.id,
      }),
    );
  }
Run Code Online (Sandbox Code Playgroud)

这是我的回调代码:

@Get('salesforce/callback')
  async callback(@Query('code') code: string, @Query('state') state: string) {
    const user = await this.userService.findById(state);
    const oauth2 = new OAuth2({
      loginUrl: user.salesforceOauthInformation.loginUrl,
      clientId: user.salesforceOauthInformation.clientId,
      clientSecret: user.salesforceOauthInformation.clientSecret,
      redirectUri: …
Run Code Online (Sandbox Code Playgroud)

salesforce oauth-2.0 typescript nestjs jsforce

0
推荐指数
1
解决办法
2万
查看次数