创建Facebook Session对象并从中进行记录

时间:2013-12-05 11:15:54

标签: android facebook session login facebook-sdk-3.0

我正在尝试创建一个简单的事情,当用户点击按钮然后Facebook登录过程应该工作。我使用已弃用的方法执行此操作,并在记录之前将其添加到应用程序中。在FB SDK 3.5中,我使用会话类通过遵循许多教程来创建该登录,并且他们也在活动开始时使用FC。这是我的代码,

public class MainActivity extends Activity implements OnClickListener {

TextView username;
String APP_ID;
Button btn_login;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);     
    APP_ID = getString(R.string.app_id);
    btn_login = (Button)findViewById(R.id.login);
    btn_login.setOnClickListener(this);         

}       
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
              super.onActivityResult(requestCode, resultCode, data);
}
@Override
public void onClick(View view) {    

    Session.openActiveSession(this, true, new Session.StatusCallback(){
        @Override
        public void call(Session session, SessionState state,
                Exception exception) {

        }           
    });
}
}

的AndroidManifest.xml

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.facebookapp.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity> 

    <activity android:name="com.facebook.LoginActivity" />

<meta-data
    android:name="com.facebook.sdk.ApplicationId"
    android:value="@string/app_id" />

</application>

仅使用登录功能是否正确?如果有错,请帮助我在没有原生LoginButton系统的Facebook SDK 3.5上如何做到这一点。希望你的回答。

1 个答案:

答案 0 :(得分:1)

看看这个方法:

 private boolean ensureOpenSession() {
    if (Session.getActiveSession() == null || !Session.getActiveSession().isOpened()) 
    {
        Session.openActiveSession(this, true, new Session.StatusCallback() {
            @Override
            public void call(Session session, SessionState state, Exception exception) 
            {
                onSessionStateChanged(session, state, exception);
            }
        });
        return false;
    }
    else
    {
        onSessionStateChanged(Session.getActiveSession(), Session.getActiveSession().getState(), null);
    }
    return true;
}

并且必须创建onSessionStateChanged方法:

 private void onSessionStateChanged(Session session, SessionState state, Exception exception)
 {}

您可以在其中指定会话状态更改时发生的情况。