【问题标题】:Create Facebook Session object and log from it创建 Facebook Session 对象并从中记录
【发布时间】:2013-12-22 07:22:11
【问题描述】:

当用户单击按钮时,我正在尝试创建一个简单的东西,然后 facebook 登录过程应该可以工作。我使用已弃用的方法执行此操作,并在记录之前对应用程序进行了 FC。在 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 上执行此操作。希望你的好意回答。

【问题讨论】:

    标签: android facebook session login facebook-sdk-3.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)
     {}
    

    您可以在其中指定 Session 状态更改时会发生什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-09
      • 1970-01-01
      相关资源
      最近更新 更多