2017-09-10 7 views
0

私は、salesforceインスタンスからデータを取得する必要があるモバイルアプリケーションを構築しています。適切なデータを取得するためにSOQLに問題はありません。しかし、モバイルアプリのユーザーがトークンを取得するためにログインする必要はありません。データにアクセスするためにはトークンを取得する必要があります。外部アプリケーションをSalesforceインスタンスに認証する

APIの適切な使用/アクセスを許可するために、アプリケーションのappIdとクライアントシークレットを介してアプリケーションを認証することは可能ですか?これは、認証されたユーザを必要とせずに、ParseまたはFirebaseインスタンスにアプリを認証するのと同様です。

ありがとうございます!

答えて

0

これは、この例では私はアカウントを取得し、nodejs/Expressの例である:

var express = require('express'); 
var router = express.Router(); 
var nforce = require('nforce'); 
/* GET home page. */ 
router.get('/', function(req, res, next) { 

var accounts =[]; 
// create the connection with the Salesforce connected app 
var org = nforce.createConnection({ 
clientId: process.env.CLIENT_ID, 
clientSecret: process.env.CLIENT_SECRET, 
redirectUri: process.env.CALLBACK_URL, 
mode: 'single' 
}); 

// authenticate and return OAuth token 
org.authenticate({ 
username: process.env.USERNAME, 
password: process.env.PASSWORD+process.env.SECURITY_TOKEN 
}, function(err, resp){ 
    if (!err) { 

    console.log('Successfully logged in! Cached Token: ' + 
    org.oauth.access_token); 
    // execute the query 
    org.query({ query: 'select id, name from account' }, function(err, resp){ 
    if(!err && resp.records) { 
     // output the account names 
     for (i=0; i<resp.records.length;i++) { 
     //console.log(resp.records[i].get('name')); 
     accounts.push(resp.records[i].get('name')); 
     } 

     res.render('index', { title:'Accounts',accounts:accounts }); 
    } 
    }); 
} 
if (err) console.log(err); 
}); 

//console.log(accounts); 

}); 

module.exports = router; 

あなたは認証のためにあなたのAPI crendentialsを取得する必要があり、あなたが概念をされて使用している言語の問題ではありません。同じ。

USERNAME:あなたのSalesforceユーザ名

PASSWORD:あなたのSalesforceパスワード

SECURITY_TOKEN:あなたのユーザーのセキュリティトークン、あなたはそれを持っていない場合は、私の設定 - パーソナル-Reset私のセキュリティトークンに行くことができますSalesforceからトークンが電子メールに送信されます。

その他のパラメータは、アプリケーションから取得するパラメータです。そのため、セキュリティトークンを取得するためにアプリを登録する必要があります。

接続したアプリケーションを作成するには、次のようにします。セットアップ - ビルド - Connected Appsのセクションにあるアプリケーションを作成して新しいアプリケーションを作成します。接続されたAPIはコンシューマーキーとコンシューマーシークレットを生成します。

CLIENT_IDは:消費者キー

CLIENT_SECRETです:私の例では、コールバックURLは次のとおりです:

CALLBACK_URL秘密消費者ですhttp://localhost:3000私は今それをやっている方法です

+0

。私は有効なユーザー名とパスワードの組み合わせを提供するときに取得されるアクセストークンを必要とせずに、コールを行い、セールスフォースからデータを取得しようとしています。クライアントアプリケーションをホワイトリスト/認証するためにclient_idとclient_secretだけでsalesforceインスタンスへの呼び出しを行いたいと思います。 –

+0

Salesforce APIを使用してこれが可能かどうかはわかりませんが、この質問をSalesforceフォーラムに投稿しましたか? –

関連する問題