To further @VM4's excellent answer I modified their approach for it to work correctly with SDK version 4.12.0
Firstly I added the following to AndroidManifest.xml
<activity xmlns:tools="http://schemas.android.com/tools"
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name"
android:theme="@style/Translucent"
tools:replace="android:theme"/>
In Android Studio 2.2, it is likely that Manifest Merging may produce an error complaining that the android:theme cannot be overridden as it already exists. This can be resolved using tools:replace="android:theme" in the <activity> tag.
I created a custom style within /res/values/styles.xml
<style name="Translucent" parent="Translucent.Base"/>
<style name="Translucent.Base" parent="android:Theme.Translucent.NoTitleBar">
<item name="android:progressBarStyle">@style/InvisibleProgress</item>
</style>
This correctly removed the hideous Facebook progress dialog.
However, on 5.0 (API 21)+ devices this did have the side effect of coloring the top most system bar black for the time the FacebookActivity was active.
To fix this I added a style in res/values-v21/styles.xml
<style name="Translucent" parent="Translucent.Base">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
This made the theme completely transparent and removed the progress dialog.
Finally, one thing to note with solutions that recommend using @android:style/Theme.NoDisplay is that this will not work on Android Marshmallow 6.0 (API 23)+ and should probably be avoided in future.