Android 创建Facebook会话对象并从中登录
我试图创建一个简单的东西,当用户点击按钮,然后facebook登录过程应该工作。我使用不推荐的方法完成了这项工作,并在登录之前将其保存到应用程序中。在FB SDK 3.5中,我使用session类通过以下许多教程创建该登录,并且它们在活动开始时也将使用FC。这是我的密码Android 创建Facebook会话对象并从中登录,android,facebook,session,login,facebook-sdk-3.0,Android,Facebook,Session,Login,Facebook Sdk 3.0,我试图创建一个简单的东西,当用户点击按钮,然后facebook登录过程应该工作。我使用不推荐的方法完成了这项工作,并在登录之前将其保存到应用程序中。在FB SDK 3.5中,我使用session类通过以下许多教程创建该登录,并且它们在活动开始时也将使用FC。这是我的密码 public class MainActivity extends Activity implements OnClickListener { TextView username; String APP_ID; Button
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>
只有一个登录功能是否正确。如果有错误,请帮助我如何在没有本机登录按钮系统的情况下在Facebook SDK 3.5上执行此操作。希望您能给予善意的回答。看看这个方法:
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)
{}
您可以在其中指定会话状态更改时发生的情况。查看此方法:
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)
{}
您可以在其中指定会话状态更改时发生的情况