I\'m reading facebook Android API 3.0 documents, and I do not understand what does session has to do with background activities. In all examples I\'m supposed to extend \"Facebo
You do not need to inherit from anything, if you don't provide an app_id through code, you must specify it in your application metadata (and in your strings.xml). See https://developers.facebook.com/docs/reference/android/3.0/Session#APPLICATION_ID_PROPERTY
In your AndroidManifest.xml, you need to add:
<application android:label="@string/app_name" ...>
... other activity stuff here ...
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>
</application>
And then add app_id as a string in your string.xml.
FacebookFragment is not public and is not intended for use by applications.
The samples do mostly use FacebookActivity though, and yes--you do not need to extend FacebookActivity. As you mention, SessionLoginSample demonstrates this, and if you are not using FacebookActivity you should handle Session serialization and override/forward onActivityResult as illustrated there.
That said, it sounds like the main issue you are hitting is around setting the applicationId. You can set applicationId in code or in meta-data.
To set it in code, define a String constant MY_APP_ID that contains your app id and replace the line:
session = new Session(this);
with:
session = new Session.Builder(this).setApplicationId(MY_APP_ID).build();
To set it in meta-data, add the following to your AndroidManifest.xml inside the application tag but outside of any activity tags:
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>
Then, in values/strings.xml, add a value for app_id that has your app id:
<string name="app_id">1234567890</string>