LoginSignup
2
1

More than 5 years have passed since last update.

railsからSalesforce Chatterフィードを取得

Posted at

やること

  • Salesforceに「接続アプリケーション」作成
  • rails からChatter REST APIを叩き、Chatter Feed取得

実装

Salesforce 接続アプリケーション作成

SalesforceにRESTでアクセスするための設定を行う
(https://web.plus-idea.net/2016/06/salesforce-rest-api-call-setting/)
を参考に
接続アプリケーション.png
「コンシューマ鍵」と「コンシューマの秘密」の2つをApiコール時に使用

rails からChatter REST APIを叩き、Chatter Feed取得

Controller.rb

require 'net/http'
require 'uri'
require 'json'
require 'net/https'

class HelloController < ApplicationController
  def index

    # OAuth 2.0認証よりアクセストークン取得
    uri = URI.parse("https://login.salesforce.com/services/oauth2/token?grant_type=password&client_id=<コンシューマ鍵>&client_secret=<コンシューマの秘密>&username=<Salesforceユーザ>&password=<パスワード>")

    https = Net::HTTP.new(uri.host, uri.port)
    https.use_ssl = true
    https.set_debug_output $stderr
    req = Net::HTTP::Post.new(uri.request_uri)
    req["Content-Type"] = "application/x-www-form-urlencoded"

    res = https.request(req)
    @result = JSON.parse(res.body)
    # アクセストークン取得
    @token = @result["access_token"]

    # GETリクエスト→Chatter Feed取得
    url = URI.parse('https://login.salesforce.com/services/data/v43.0/chatter/feeds/news/me/feed-elements')

    req = Net::HTTP::Get.new(url.request_uri)
    req["Authorization"] = 'Bearer ' << @token

    # フィード情報取得
    res = https.request(req)

    @feedsData = res.body

  end
end

※注意点
1. Salesforceの設定で、「私のドメイン」を設定していると、
https://login.salesforce.com/ → https://<私のドメイン>.salesforce.com/
となる。

<フィード取得結果サンプル(JSON)>

{
    "currentPageToken": null,
    "currentPageUrl": "/services/data/v43.0/chatter/feeds/news/00528000003oTdCAAU/feed-elements",
    "elements": [
        {
            "actor": {
                "additionalLabel": null,
                "communityNickname": "iseki1",
                "companyName": "companyName",
                "displayName": "displayName",
                "firstName": "displayName",
                "id": "00528000003oTdCAAU",
                "isActive": true,
                "isInThisCommunity": true,
                "lastName": "displayName",
                "motif": {
                    "color": "65CAE4",
                    "largeIconUrl": "/img/icon/profile64.png",
                    "mediumIconUrl": "/img/icon/profile32.png",
                    "smallIconUrl": "/img/icon/profile16.png",
                    "svgIconUrl": null
                },
                "mySubscription": null,
                "name": "displayName",
                "outOfOffice": {
                    "message": ""
                },
                "photo": {
                    "fullEmailPhotoUrl": "",
                    "largePhotoUrl": "",
                    "mediumPhotoUrl": "",
                    "photoVersionId": null,
                    "smallPhotoUrl": "",
                    "standardEmailPhotoUrl": "",
                    "url": "/services/data/v43.0/connect/user-profiles/00528000003oTdCAAU/photo"
                },
                "reputation": null,
                "stamps": [],
                "title": null,
                "type": "User",
                "url": "/services/data/v43.0/chatter/users/00528000003oTdCAAU",
                "userType": "Internal"
            },
            "body": {
                "isRichText": true,
                "messageSegments": [
                    {
                        "htmlTag": "p",
                        "markupType": "Paragraph",
                        "text": "",
                        "type": "MarkupBegin"
                    },
                    {
                        "text": "ここにフィードの内容が記載される ",
                        "type": "Text"
                    },
                    {
                        "htmlTag": "p",
                        "markupType": "Paragraph",
                        "text": "\n",
                        "type": "MarkupEnd"
                    }
                ],
                "text": "ここにフィードの内容が記載される "
            },

環境

Rails 5.2.0
Salesforce Developer Edition(Summer 18)

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1