diff --git a/Changelog.md b/Changelog.md
index 4a6550ffd88f570dc0fce292780b7984b56ec9e3..59eca2dd23b4643ba5e74354f91237519cd00ca5 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -11,6 +11,7 @@
 ## Refactor
 * Remove mention of deprecated `statistic.json` [#7867](https://github.com/diaspora/diaspora/pull/7867)
 * Add quotes in `database.yml.example` to fields that may contain special characters [#7875](https://github.com/diaspora/diaspora/pull/7875)
+* Removed broken, and thus deprecated, Facebook integration [#7874](https://github.com/diaspora/diaspora/pull/7874)
 
 ## Bug fixes
 * Add compatibility with macOS to `script/configure_bundler` [#7830](https://github.com/diaspora/diaspora/pull/7830)
diff --git a/Gemfile b/Gemfile
index 6138dc7b8c1092b65b6d858ccb2fedf0638ffceb..559a40581d74c7cf7f0e116a91d819779f118614 100644
--- a/Gemfile
+++ b/Gemfile
@@ -157,7 +157,6 @@ gem "secure_headers", "5.0.5"
 # Services
 
 gem "omniauth",           "1.8.1"
-gem "omniauth-facebook",  "4.0.0"
 gem "omniauth-tumblr",    "1.2"
 gem "omniauth-twitter",   "1.4.0"
 gem "omniauth-wordpress", "0.2.2"
diff --git a/Gemfile.lock b/Gemfile.lock
index b786149c06e84ac4da825ac7e0a343b34577662e..1af644261acf5d182ee6a6e104a7dc7d036d6e76 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -408,8 +408,6 @@ GEM
     omniauth (1.8.1)
       hashie (>= 3.4.6, < 3.6.0)
       rack (>= 1.6.2, < 3)
-    omniauth-facebook (4.0.0)
-      omniauth-oauth2 (~> 1.2)
     omniauth-oauth (1.1.0)
       oauth
       omniauth (~> 1.0)
@@ -820,7 +818,6 @@ DEPENDENCIES
   mysql2 (= 0.5.0)
   nokogiri (= 1.8.2)
   omniauth (= 1.8.1)
-  omniauth-facebook (= 4.0.0)
   omniauth-tumblr (= 1.2)
   omniauth-twitter (= 1.4.0)
   omniauth-wordpress (= 0.2.2)
diff --git a/app/assets/images/social-media-logos/facebook-16x16.png b/app/assets/images/social-media-logos/facebook-16x16.png
deleted file mode 100644
index 7ae54147a5eb610978bb6343c038528ad87ea384..0000000000000000000000000000000000000000
Binary files a/app/assets/images/social-media-logos/facebook-16x16.png and /dev/null differ
diff --git a/app/assets/images/social-media-logos/facebook-24x24.png b/app/assets/images/social-media-logos/facebook-24x24.png
deleted file mode 100644
index 27b9a6102bfa882369d81da067188df962496036..0000000000000000000000000000000000000000
Binary files a/app/assets/images/social-media-logos/facebook-24x24.png and /dev/null differ
diff --git a/app/assets/images/social-media-logos/facebook-32x32.png b/app/assets/images/social-media-logos/facebook-32x32.png
deleted file mode 100644
index 360df4478d00488bf83089585df760a495c294d2..0000000000000000000000000000000000000000
Binary files a/app/assets/images/social-media-logos/facebook-32x32.png and /dev/null differ
diff --git a/app/assets/stylesheets/navbar_left.scss b/app/assets/stylesheets/navbar_left.scss
index b523d789a8dcbbebb47310cddf8b9b0b275263ce..3fde9e3a892a901fd00a6f0885245a670f03ff43 100644
--- a/app/assets/stylesheets/navbar_left.scss
+++ b/app/assets/stylesheets/navbar_left.scss
@@ -199,7 +199,6 @@
     }
     text-align: center;
 
-    .social-media-logos-facebook-24x24,
     .social-media-logos-twitter-24x24,
     .social-media-logos-tumblr-24x24,
     .social-media-logos-wordpress-24x24 {
diff --git a/app/models/services/facebook.rb b/app/models/services/facebook.rb
deleted file mode 100644
index b781f7ee7d411ad16ff30e62519d4a04a3a21081..0000000000000000000000000000000000000000
--- a/app/models/services/facebook.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-# frozen_string_literal: true
-
-class Services::Facebook < Service
-  include Rails.application.routes.url_helpers
-
-  OVERRIDE_FIELDS_ON_FB_UPDATE = [:contact_id, :person_id, :request_id, :invitation_id, :photo_url, :name, :username]
-  MAX_CHARACTERS = 63206
-
-  def provider
-    "facebook"
-  end
-
-  def post(post, url='')
-    logger.debug "event=post_to_service type=facebook sender_id=#{user_id} post=#{post.guid}"
-    response = post_to_facebook("https://graph.facebook.com/me/feed", create_post_params(post).to_param)
-    response = JSON.parse response.body
-    post.facebook_id = response["id"]
-    post.save
-  end
-
-  def post_to_facebook(url, body)
-    Faraday.post(url, body)
-  end
-
-  def create_post_params(post)
-    message = post.message.plain_text_without_markdown
-    post_url = short_post_url(post, protocol: AppConfig.pod_uri.scheme, host: AppConfig.pod_uri.authority)
-
-    message = if message.empty?
-                post_url
-              else
-                "#{message} (via #{post_url})"
-              end
-
-    {
-      message:      message,
-      access_token: access_token,
-      link:         post.message.urls.first
-    }
-  end
-
-  def profile_photo_url
-   "https://graph.facebook.com/#{self.uid}/picture?type=large&access_token=#{URI.escape(self.access_token)}"
-  end
-
-  def post_opts(post)
-    {facebook_id: post.facebook_id} if post.facebook_id.present?
-  end
-
-  def delete_from_service(opts)
-    logger.debug "event=delete_from_service type=facebook sender_id=#{user_id} facebook_id=#{opts[:facebook_id]}"
-    delete_from_facebook("https://graph.facebook.com/#{opts[:facebook_id]}/", access_token: access_token)
-  end
-
-  def delete_from_facebook(url, body)
-    Faraday.delete(url, body)
-  end
-end
diff --git a/app/views/users/getting_started.haml b/app/views/users/getting_started.haml
index c35c8a9f773f68643d248fbff13da4d44eb3048b..8e8eced22f0e1b44d8f4e49bd7a248d082b5fe90 100644
--- a/app/views/users/getting_started.haml
+++ b/app/views/users/getting_started.haml
@@ -14,10 +14,6 @@
         %h3
           = t(".who_are_you")
 
-        - if AppConfig.configured_services.include? :facebook
-          %p
-            != t('.connect_to_facebook', link: link_to(t('.connect_to_facebook_link'), "auth/facebook?callback_url=#{getting_started_url}"))
-
         = form_tag profile_path, method: :put, remote: true, id: 'edit_profile' do
           %fieldset
             .form-group
diff --git a/app/views/users/getting_started.mobile.haml b/app/views/users/getting_started.mobile.haml
index 91dfcc161a6d8cf9476e0fa6cb3ba73af48cf2bb..9903620e5449c0eecf08f24dd8cf337d0a1ec53c 100644
--- a/app/views/users/getting_started.mobile.haml
+++ b/app/views/users/getting_started.mobile.haml
@@ -19,10 +19,6 @@
     %h2
       = t(".who_are_you")
 
-    - if AppConfig.configured_services.include? :facebook
-      %p
-        != t('.connect_to_facebook', link: link_to(t('.connect_to_facebook_link'), "auth/facebook?callback_url=#{getting_started_url}"))
-
     = form_tag profile_path, method: :put, remote: true, id: "edit_profile" do
       %fieldset
         .form-group
diff --git a/config/defaults.yml b/config/defaults.yml
index 574add1be451b66a6b9557c03d1bd7b24e8b8310..3717fcc5c07c585921086f67818141100661635d 100644
--- a/config/defaults.yml
+++ b/config/defaults.yml
@@ -153,12 +153,6 @@ defaults:
       report_only: true
       report_uri:
   services:
-    facebook:
-      enable: false
-      app_id:
-      secret:
-      open_graph_namespace: 'joindiaspora'
-      authorized: false
     twitter:
       enable: false
       key:
@@ -234,11 +228,10 @@ test:
     invitations:
       open: true
   services:
-    facebook:
+    twitter:
       enable: true
-      app_id: 'fake'
+      key: 'fake'
       secret: 'sdoigjosdfijg'
-      authorized: true
   mail:
     enable: true
 integration1:
diff --git a/config/diaspora.yml.example b/config/diaspora.yml.example
index 6d64fbd41b25fe30347448035a56c78b2540dbed..8c1b54615a5f2368b5a830c4b3f626ae3e1c2363 100644
--- a/config/diaspora.yml.example
+++ b/config/diaspora.yml.example
@@ -21,7 +21,7 @@
 ## - Specify lists/arrays as comma-separated values
 ##
 ## - For example, on Heroku:
-##   heroku config:set SERVICES_FACEBOOK_APP_ID=yourappid SERVICES_FACEBOOK_SECRET=yourappsecret
+##   heroku config:set SERVICES_TWITTER_KEY=yourkey SERVICES_TWITTER_SECRET=yoursecret
 
 configuration: ## Section
 
@@ -583,20 +583,6 @@ configuration: ## Section
   ## Posting from Diaspora to external services (all are disabled by default).
   services: ## Section
 
-    ## OAuth credentials for Facebook
-    facebook: ## Section
-
-      #enable: true
-      #app_id: 'abcdef'
-      #secret: 'change_me'
-
-      ## This setting is required to define whether the Facebook app has permissions to post
-      ##   false == No permissions (default)
-      ##   true == Permissions for all users to post. App MUST have 'publish_actions' approved by Facebook!
-      ##   "username" == Set to local username to allow a single user to cross-post. The person who has created
-      ##                 the Facebook app will always be able to cross-post, even without 'publish_actions'.
-      #authorized: false
-
     ## OAuth credentials for Twitter
     twitter: ## Section
 
diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb
index 8555c0e82815bcc0c8efd0bc91e2365e338bbd44..9e25beffdd0fa7e5fc1574cfadd366eb31e29608 100644
--- a/config/initializers/omniauth.rb
+++ b/config/initializers/omniauth.rb
@@ -13,17 +13,6 @@ Rails.application.config.middleware.use OmniAuth::Builder do
     provider :tumblr, AppConfig.services.tumblr.key, AppConfig.services.tumblr.secret
   end
 
-  if AppConfig.services.facebook.enable?
-    provider :facebook, AppConfig.services.facebook.app_id, AppConfig.services.facebook.secret, {
-      scope:          "public_profile,publish_actions",
-      client_options: {
-        ssl: {
-          ca_file: AppConfig.environment.certificate_authorities
-        }
-      }
-    }
-  end
-
   if AppConfig.services.wordpress.enable?
     provider :wordpress, AppConfig.services.wordpress.client_id, AppConfig.services.wordpress.secret
   end
diff --git a/config/locales/diaspora/en.yml b/config/locales/diaspora/en.yml
index e6d80d0b18b93b0f5bc3f319184cce6fd932bbb1..c4b031bc3915e1ea7e515918046cd56001b493f3 100644
--- a/config/locales/diaspora/en.yml
+++ b/config/locales/diaspora/en.yml
@@ -1043,7 +1043,6 @@ en:
     comment_email_subject: "%{resharer}’s reshare of %{author}’s post"
   services:
     provider:
-      facebook: "Facebook"
       tumblr: "Tumblr"
       twitter: "Twitter"
       wordpress: "WordPress"
@@ -1264,8 +1263,6 @@ en:
       community_welcome: "diaspora*’s community is happy to have you aboard!"
       awesome_take_me_to_diaspora: "Awesome! Take me to diaspora*"
       who_are_you: "Who are you?"
-      connect_to_facebook: "We can speed things up a bit by %{link} to diaspora*. This will pull your name and photo, and enable cross-posting."
-      connect_to_facebook_link: "Hooking up your Facebook account"
       what_are_you_in_to: "What are you into?"
       hashtag_explanation: "Hashtags allow you to talk about and follow your interests. They’re also a great way to find new people on diaspora*."
       hashtag_suggestions: "Try following tags like #art, #movies, #gif, etc."
diff --git a/db/migrate/20181004003638_remove_facebook.rb b/db/migrate/20181004003638_remove_facebook.rb
new file mode 100644
index 0000000000000000000000000000000000000000..af0d7f97be20ed7a0c5586b1d30a4b054363c60c
--- /dev/null
+++ b/db/migrate/20181004003638_remove_facebook.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+class RemoveFacebook < ActiveRecord::Migration[5.1]
+  class Service < ApplicationRecord
+  end
+
+  def change
+    remove_column :posts, :facebook_id, :string
+
+    reversible do |change|
+      change.up { Service.where(type: "Services::Facebook").delete_all }
+    end
+  end
+end
diff --git a/lib/configuration_methods.rb b/lib/configuration_methods.rb
index add11a016b36bd2d7ae70e6633695b5c1dca5587..511e8e2d2ea3a78f0cf4dda24a5a7d6402e9241c 100644
--- a/lib/configuration_methods.rb
+++ b/lib/configuration_methods.rb
@@ -1,7 +1,7 @@
 # frozen_string_literal: true
 
 module Configuration
-  KNOWN_SERVICES = [:twitter, :tumblr, :facebook, :wordpress].freeze
+  KNOWN_SERVICES = %i[twitter tumblr wordpress].freeze
 
   module Methods
     def pod_uri
diff --git a/spec/controllers/jasmine_fixtures/aspects_spec.rb b/spec/controllers/jasmine_fixtures/aspects_spec.rb
index cd2c39c6cc271c57ff847718cec86b1dfe03c440..47e5ec8ca08973f675560c44ce6d193293bca005 100644
--- a/spec/controllers/jasmine_fixtures/aspects_spec.rb
+++ b/spec/controllers/jasmine_fixtures/aspects_spec.rb
@@ -29,8 +29,8 @@ describe StreamsController, :type => :controller do
       end
 
       it 'generates a jasmine fixture with services', :fixture => true do
-        alice.services << Services::Facebook.create(:user_id => alice.id)
-        alice.services << Services::Twitter.create(:user_id => alice.id)
+        alice.services << Services::Twitter.create(user_id: alice.id)
+        alice.services << Services::Tumblr.create(user_id: alice.id)
         get :aspects, params: {prefill: "reshare things"}
         save_fixture(html_for("body"), "aspects_index_services")
       end
diff --git a/spec/controllers/services_controller_spec.rb b/spec/controllers/services_controller_spec.rb
index a1c333915df846f61719beb8adfb53bed5e3b724..38ee497c4666b646992bc35d60ba1a1d9a65c1d0 100644
--- a/spec/controllers/services_controller_spec.rb
+++ b/spec/controllers/services_controller_spec.rb
@@ -5,12 +5,14 @@
 #   the COPYRIGHT file.
 
 describe ServicesController, :type => :controller do
-  let(:omniauth_auth) do
-    { 'provider' => 'facebook',
-      'uid'      => '2',
-      'info'   => { 'nickname' => 'grimmin', 'image' => 'http://graph.facebook.com/2/picture' },
-      'credentials' => { 'token' => 'tokin', 'secret' =>"not_so_much" }}
-    end
+  let(:omniauth_auth) {
+    {
+      "provider"    => "tumblr",
+      "uid"         => "2",
+      "info"        => {"nickname" => "grimmin"},
+      "credentials" => {"token" => "token", "secret" => "not_so_much"}
+    }
+  }
   let(:user) { alice }
 
   before do
@@ -37,22 +39,13 @@ describe ServicesController, :type => :controller do
 
     it 'creates a new service and associates it with the current user' do
       expect {
-        post :create, params: {provider: "facebook"}
+        post :create, params: {provider: "twitter"}
       }.to change(user.services, :count).by(1)
     end
 
     it 'saves the provider' do
-      post :create, params: {provider: "facebook"}
-      expect(user.reload.services.first.class.name).to eq("Services::Facebook")
-    end
-
-    context "when the user hasn't got a profile photo on Diaspora" do
-      before { user.person.profile.update_attribute :image_url, nil }
-
-      it "imports the profile photo from the service" do
-        expect(Workers::FetchProfilePhoto).to receive(:perform_async)
-        post :create, params: {provider: "facebook"}
-      end
+      post :create, params: {provider: "twitter"}
+      expect(user.reload.services.first.class.name).to eq("Services::Tumblr")
     end
 
     context 'when service exists with the same uid' do
@@ -97,23 +90,10 @@ describe ServicesController, :type => :controller do
       end
     end
 
-    context 'Facebook' do
-      before do
-        facebook_auth_without_twitter_extras = { 'provider' => 'facebook', 'extras' => { 'someotherkey' => 'lorem'}}
-        request.env['omniauth.auth'] = omniauth_auth.merge!( facebook_auth_without_twitter_extras )
-      end
-
-      it "doesn't break when twitter-specific extras aren't available in omniauth hash" do
-        expect {
-          post :create, params: {provider: "facebook"}
-        }.to change(user.services, :count).by(1)
-      end
-    end
-
     context 'when fetching a photo' do
       before do
         omniauth_auth
-        omniauth_auth["info"].merge!({"image" => "https://service.com/fallback_lowres.jpg"})
+        omniauth_auth["info"]["image"] = "https://service.com/fallback_lowres.jpg"
 
         request.env['omniauth.auth'] = omniauth_auth
       end
diff --git a/spec/controllers/status_messages_controller_spec.rb b/spec/controllers/status_messages_controller_spec.rb
index d38c12289dfd7a91045dc2ca2cb1166d4d81dc83..14e6999ab7145297da14df62514156185dc264bf 100644
--- a/spec/controllers/status_messages_controller_spec.rb
+++ b/spec/controllers/status_messages_controller_spec.rb
@@ -141,20 +141,17 @@ describe StatusMessagesController, :type => :controller do
     end
 
     it "dispatches the post to the specified services" do
-      s1 = Services::Facebook.new
-      alice.services << s1
       alice.services << Services::Twitter.new
-      status_message_hash[:services] = ['facebook']
+      status_message_hash[:services] = ["twitter"]
       service_types = Service.titles(status_message_hash[:services])
-      expect(alice).to receive(:dispatch_post).with(anything(), hash_including(:service_types => service_types))
+      expect(alice).to receive(:dispatch_post).with(anything, hash_including(service_types: service_types))
       post :create, params: status_message_hash
     end
 
     it "works if services is a string" do
-      s1 = Services::Facebook.new
-      alice.services << s1
-      status_message_hash[:services] = "facebook"
-      expect(alice).to receive(:dispatch_post).with(anything(), hash_including(:service_types => ["Services::Facebook"]))
+      alice.services << Services::Twitter.new
+      status_message_hash[:services] = "twitter"
+      expect(alice).to receive(:dispatch_post).with(anything, hash_including(service_types: ["Services::Twitter"]))
       post :create, params: status_message_hash
     end
 
diff --git a/spec/javascripts/app/models/user_spec.js b/spec/javascripts/app/models/user_spec.js
index 621b35a368056a7935094b2231b415ddbe1320d7..4d80b0873561b9f584cd51b197ef8edcc34134ff 100644
--- a/spec/javascripts/app/models/user_spec.js
+++ b/spec/javascripts/app/models/user_spec.js
@@ -16,8 +16,8 @@ describe("app.models.User", function(){
 
   describe("isServiceConnected", function(){
     it("checks to see if the sent provider name is a configured service", function(){
-      this.user.set({configured_services : ["facebook"]});
-      expect(this.user.isServiceConfigured("facebook")).toBeTruthy();
+      this.user.set({configured_services: ["twitter"]}); // eslint-disable-line camelcase
+      expect(this.user.isServiceConfigured("twitter")).toBeTruthy();
       expect(this.user.isServiceConfigured("tumblr")).toBeFalsy();
     });
   });
diff --git a/spec/lib/configuration_methods_spec.rb b/spec/lib/configuration_methods_spec.rb
index eeb963185dab26a4e4432ed38b03f47aae2c2660..ae812578ca07385543463f249c76fa95d0cf8eb4 100644
--- a/spec/lib/configuration_methods_spec.rb
+++ b/spec/lib/configuration_methods_spec.rb
@@ -94,22 +94,17 @@ describe Configuration::Methods do
       allow(disabled).to receive(:enable?).and_return(false)
       allow(services).to receive(:twitter).and_return(enabled)
       allow(services).to receive(:tumblr).and_return(enabled)
-      allow(services).to receive(:facebook).and_return(disabled)
       allow(services).to receive(:wordpress).and_return(disabled)
       allow(@settings).to receive(:services).and_return(services)
       expect(@settings.configured_services).to include :twitter
       expect(@settings.configured_services).to include :tumblr
-      expect(@settings.configured_services).not_to include :facebook
       expect(@settings.configured_services).not_to include :wordpress
     end
   end
 
   describe "#show_service" do
     before do
-      AppConfig.services.twitter.authorized = true
       AppConfig.services.twitter.enable = true
-      AppConfig.services.facebook.authorized = true
-      AppConfig.services.facebook.enable = true
       AppConfig.services.wordpress.authorized = false
       AppConfig.services.wordpress.enable = true
       AppConfig.services.tumblr.authorized = "alice"
@@ -120,10 +115,6 @@ describe Configuration::Methods do
       expect(AppConfig.show_service?("twitter", bob)).to be_truthy
     end
 
-    it "shows service with authorized key true" do
-      expect(AppConfig.show_service?("facebook", bob)).to be_truthy
-    end
-
     it "doesn't show service with authorized key false" do
       expect(AppConfig.show_service?("wordpress", bob)).to be_falsey
     end
diff --git a/spec/lib/diaspora/federated/retraction_spec.rb b/spec/lib/diaspora/federated/retraction_spec.rb
index 1fe6b9d566f0c721219c2b2f227d974be5173b4f..ff11490643c6fc5c0803f1d0a9b7edbe9c5e429e 100644
--- a/spec/lib/diaspora/federated/retraction_spec.rb
+++ b/spec/lib/diaspora/federated/retraction_spec.rb
@@ -79,8 +79,7 @@ describe Retraction do
     it "adds service metadata to queued job for deletion" do
       post.tweet_id = "123"
       twitter = Services::Twitter.new(access_token: "twitter")
-      facebook = Services::Facebook.new(access_token: "facebook")
-      alice.services << twitter << facebook
+      alice.services << twitter
 
       retraction = Retraction.for(post)
       federation_retraction = Diaspora::Federation::Entities.retraction(retraction)
diff --git a/spec/models/service_spec.rb b/spec/models/service_spec.rb
index 57223b981bdeca7fd1272e70f10a6660c0a50f7c..7c00889b8e8b1ab5e4aa9a92b72bcbf3055ab6df 100644
--- a/spec/models/service_spec.rb
+++ b/spec/models/service_spec.rb
@@ -1,58 +1,59 @@
 # frozen_string_literal: true
 
-describe Service, :type => :model do
+describe Service, type: :model do
   before do
-    @post = alice.post(:status_message, :text => "hello", :to => alice.aspects.first.id)
-    @service = Services::Facebook.new(:access_token => "yeah", :uid => 1)
+    @post = alice.post(:status_message, text: "hello", to: alice.aspects.first.id)
+    @service = Services::Twitter.new(access_token: "yeah", uid: 1)
     alice.services << @service
   end
 
-  it 'is unique to a user by service type and uid' do
+  it "is unique to a user by service type and uid" do
     @service.save
 
-    second_service = Services::Facebook.new(:access_token => "yeah", :uid => 1)
+    second_service = Services::Twitter.new(access_token: "yeah", uid: 1)
 
     alice.services << second_service
     alice.services.last.save
     expect(alice.services.last).to be_invalid
   end
 
-  it 'by default has no profile photo url' do
-    expect( described_class.new.profile_photo_url ).to be_nil
+  it "by default has no profile photo url" do
+    expect(described_class.new.profile_photo_url).to be_nil
   end
 
-  describe '.titles' do
+  describe ".titles" do
     it "converts passed service titles into service constants" do
-      expect( described_class.titles( ['twitter'] ) ).to eql ['Services::Twitter']
+      expect(described_class.titles(["twitter"])).to eql ["Services::Twitter"]
     end
   end
 
-  describe '.first_from_omniauth' do
-    let(:omniauth) { { 'provider' => 'facebook', 'uid' => '1', 'credentials' => {}, 'info' => {} } }
-    it 'first service by provider and uid' do
-      expect( described_class.first_from_omniauth( omniauth ) ).to eql @service
+  describe ".first_from_omniauth" do
+    let(:omniauth) { {"provider" => "twitter", "uid" => "1", "credentials" => {}, "info" => {}} }
+    it "first service by provider and uid" do
+      expect(described_class.first_from_omniauth(omniauth)).to eql @service
     end
   end
 
-  describe '.initialize_from_omniauth' do
+  describe ".initialize_from_omniauth" do
     let(:omniauth) do
-      { 'provider' => 'facebook',
-        'uid'      => '2',
-        'info'   => { 'nickname' => 'grimmin' },
-        'credentials' => { 'token' => 'tokin', 'secret' =>"not_so_much" }
+      {
+        "provider"    => "twitter",
+        "uid"         => "2",
+        "info"        => {"nickname" => "grimmin"},
+        "credentials" => {"token" => "token", "secret" => "not_so_much"}
       }
     end
-    let(:subject) { described_class.initialize_from_omniauth( omniauth ) }
+    let(:subject) { described_class.initialize_from_omniauth(omniauth) }
 
-    it 'new service obj of type Services::Facebook' do
-      expect( subject.type ).to eql "Services::Facebook"
+    it "new service obj of type Services::Twitter" do
+      expect(subject.type).to eql "Services::Twitter"
     end
 
-    it 'new service obj with oauth options populated' do
-      expect( subject.uid ).to eql "2"
-      expect( subject.nickname ).to eql "grimmin"
-      expect( subject.access_token ).to eql "tokin"
-      expect( subject.access_secret ).to eql "not_so_much"
+    it "new service obj with oauth options populated" do
+      expect(subject.uid).to eql "2"
+      expect(subject.nickname).to eql "grimmin"
+      expect(subject.access_token).to eql "token"
+      expect(subject.access_secret).to eql "not_so_much"
     end
   end
 end
diff --git a/spec/models/services/facebook_spec.rb b/spec/models/services/facebook_spec.rb
deleted file mode 100644
index 6df24fe10ceab2cee6cdf9394fa3de174038aee7..0000000000000000000000000000000000000000
--- a/spec/models/services/facebook_spec.rb
+++ /dev/null
@@ -1,103 +0,0 @@
-# frozen_string_literal: true
-
-describe Services::Facebook, :type => :model do
-  before do
-    @user = alice
-    @post = @user.post(:status_message, :text => "hello", :to =>@user.aspects.first.id, :public =>true, :photos => [])
-    @service = Services::Facebook.new(:access_token => "yeah")
-    @user.services << @service
-  end
-
-  describe '#post' do
-    it 'posts a status message to facebook' do
-      stub_request(:post, "https://graph.facebook.com/me/feed").
-          to_return(:status => 200, :body => '{"id": "12345"}', :headers => {})
-      @service.post(@post)
-    end
-
-    it 'removes text formatting markdown from post text' do
-      message = double(urls: [])
-      expect(message).to receive(:plain_text_without_markdown).and_return("")
-      post = double(message: message, photos: [])
-      post_params = @service.create_post_params(post)
-    end
-
-    it "adds '(via <post URL>)'" do
-      message = "Some text."
-      post = double(message: double(plain_text_without_markdown: message, urls: []), photos: [])
-      post_params = @service.create_post_params(post)
-      expect(post_params[:message]).to include "(via http:"
-    end
-
-    it "sets facebook id on post" do
-      stub_request(:post, "https://graph.facebook.com/me/feed")
-        .to_return(status: 200, body: '{"id": "12345"}', headers: {})
-      @service.post(@post)
-      expect(@post.facebook_id).to match "12345"
-    end
-  end
-
-  describe "with photo" do
-    before do
-      @photos = [alice.build_post(:photo, pending: true, user_file: File.open(photo_fixture_name)),
-                 alice.build_post(:photo, pending: true, user_file: File.open(photo_fixture_name))]
-
-      @photos.each(&:save!)
-    end
-
-    it "should include post url in message with photos as (via... " do
-      @status_message = alice.build_post(:status_message, text: "the best pebble.")
-      @status_message.photos << @photos
-
-      @status_message.save!
-      alice.add_to_streams(@status_message, alice.aspects)
-
-      post_params = @service.create_post_params(@status_message)
-      expect(post_params[:message]).to include "(via http:"
-    end
-
-    it "should include post url in message with photos when no text message" do
-      @status_message = alice.build_post(:status_message, text: "")
-      @status_message.photos << @photos
-
-      @status_message.save!
-      alice.add_to_streams(@status_message, alice.aspects)
-
-      post_params = @service.create_post_params(@status_message)
-      expect(post_params[:message]).to include "http:"
-    end
-
-  end
-
-  describe "#profile_photo_url" do
-    it 'returns a large profile photo url' do
-      @service.uid = "abc123"
-      @service.access_token = "token123"
-      expect(@service.profile_photo_url).to eq(
-      "https://graph.facebook.com/abc123/picture?type=large&access_token=token123"
-      )
-    end
-  end
-
-  describe "#post_opts" do
-    it "returns the facebook_id of the post" do
-      @post.facebook_id = "2345"
-      expect(@service.post_opts(@post)).to eq(facebook_id: "2345")
-    end
-
-    it "returns nil when the post has no facebook_id" do
-      expect(@service.post_opts(@post)).to be_nil
-    end
-  end
-
-  describe "#delete_from_service" do
-    it "removes a post from facebook" do
-      facebook_id = "2345"
-      url = "https://graph.facebook.com/#{facebook_id}/"
-      stub_request(:delete, "#{url}?access_token=#{@service.access_token}").to_return(status: 200)
-      expect(@service).to receive(:delete_from_facebook).with(url, access_token: @service.access_token)
-
-      @service.delete_from_service(facebook_id: facebook_id)
-    end
-  end
-end
diff --git a/spec/presenters/node_info_presenter_spec.rb b/spec/presenters/node_info_presenter_spec.rb
index 8dcc0894b1bb1825c7ea014dca63a2ca80182473..8929213b03ca71c9c5c160bf8d9730f740fa5836 100644
--- a/spec/presenters/node_info_presenter_spec.rb
+++ b/spec/presenters/node_info_presenter_spec.rb
@@ -52,10 +52,6 @@ describe NodeInfoPresenter do
     context "when services are enabled" do
       before do
         AppConfig.services = {
-          "facebook"  => {
-            "enable"     => true,
-            "authorized" => true
-          },
           "twitter"   => {"enable" => true},
           "wordpress" => {"enable" => false},
           "tumblr"    => {
@@ -66,17 +62,13 @@ describe NodeInfoPresenter do
       end
 
       it "provides services" do
-        expect(hash).to include "services" => include("outbound" => %w(twitter facebook))
+        expect(hash).to include "services" => include("outbound" => ["twitter"])
       end
     end
 
     context "when some services are set to username authorized" do
       before do
         AppConfig.services = {
-          "facebook"  => {
-            "enable"     => true,
-            "authorized" => "bob"
-          },
           "twitter"   => {"enable" => true},
           "wordpress" => {
             "enable"     => true,
diff --git a/spec/services/status_message_creation_service_spec.rb b/spec/services/status_message_creation_service_spec.rb
index aaca06da310b99453e554805588cea00e7e8f2ee..cc4a35d85378698be0b7650fc54ade40171bbc3a 100644
--- a/spec/services/status_message_creation_service_spec.rb
+++ b/spec/services/status_message_creation_service_spec.rb
@@ -169,8 +169,8 @@ describe StatusMessageCreationService do
       it "dispatches the StatusMessage to services" do
         expect(alice).to receive(:dispatch_post)
           .with(instance_of(StatusMessage),
-                hash_including(service_types: array_including(%w(Services::Facebook Services::Twitter))))
-        StatusMessageCreationService.new(alice).create(params.merge(services: %w(twitter facebook)))
+                hash_including(service_types: array_including(%w[Services::Tumblr Services::Twitter])))
+        StatusMessageCreationService.new(alice).create(params.merge(services: %w[twitter tumblr]))
       end
 
       context "with mention" do
diff --git a/spec/workers/delete_post_from_service_spec.rb b/spec/workers/delete_post_from_service_spec.rb
index 48a9b85c10f528fe6cb071dd0f0a30e6a558cec0..bea4da827af4e903c082919646c7ddb5cd34598e 100644
--- a/spec/workers/delete_post_from_service_spec.rb
+++ b/spec/workers/delete_post_from_service_spec.rb
@@ -3,7 +3,7 @@
 describe Workers::DeletePostFromService do
   it "calls service#delete_from_service with given opts" do
     service = double
-    opts = {facebook_id: "23456"}
+    opts = {twitter_id: "23456"}
 
     expect(service).to receive(:delete_from_service).with(opts)
     allow(Service).to receive(:find_by_id).with("123").and_return(service)