Android 点击按钮打开Facebook登录对话框
大家好,我正在整合facebook登录到我的应用程序。我已经搜索了很多,我可以登录我使用了这个链接:Android 点击按钮打开Facebook登录对话框,android,facebook,user-interface,Android,Facebook,User Interface,大家好,我正在整合facebook登录到我的应用程序。我已经搜索了很多,我可以登录我使用了这个链接: 我想做的就是,当我点击一个按钮时,facebook对话框必须出现在刚刚打开活动(HomeActivity)的界面上,下面是我的代码 public class HomeActivity extends Activity { Facebook facebook = new Facebook("114987225319269"); @Override public
我想做的就是,当我点击一个按钮时,facebook对话框必须出现在刚刚打开活动(HomeActivity)的界面上,下面是我的代码
public class HomeActivity extends Activity {
Facebook facebook = new Facebook("114987225319269");
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
Button more = (Button) findViewById(R.id.button1);
more.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
facebook.authorize(this, new DialogListener() {
@Override
public void onComplete(Bundle values) {}
@Override
public void onFacebookError(FacebookError error) {}
@Override
public void onError(DialogError e) {}
@Override
public void onCancel() {}
});
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
facebook.authorizeCallback(requestCode, resultCode, data);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_home, menu);
return true;
}
}
在你的舱单上
<activity
android:theme="@android:style/Theme.Translucent"
android:name=".HomeActivity "
>
这会将活动主题更改为对话框
主题。希望这有助于…使用此代码
Button more = (Button) findViewById(R.id.button1);
more.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (! facebook.isSessionValid()) {
facebook.authorize(HomeActivity.this, PERMISSIONS, new LoginDialogListener());
});
}
这是登录对话框侦听器
private class LoginDialogListener implements DialogListener {
public void onComplete(Bundle values) {
saveCredentials(facebook);
getAlbumsData task = new getAlbumsData();
task.execute();
}
public void onFacebookError(FacebookError error) {
showToast("Authentication with Facebook failed!");
}
public void onError(DialogError error) {
showToast("Authentication with Facebook failed!");
}
public void onCancel() {
showToast("Authentication with Facebook cancelled!");
}
}
这就是您所需要的:
public class BaseActivity extends Activity
{
public AsyncFacebookRunner mAsyncRunner;
public Facebook facebook;
public SharedPreferences mPrefs;
public static String appId = "123344";
SharedPreferences.Editor editor;
private void initialize()
{
facebook = new Facebook(appId);
mAsyncRunner = new AsyncFacebookRunner(facebook);
}
public void verifyLogin()
{
mPrefs = getPreferences(MODE_PRIVATE);
String accessToken = mPrefs.getString("access_token", null);
facebook.setAccessToken(accessToken);
long expires = mPrefs.getLong("access_expires", 0);
if (accessToken != null)
{
facebook.setAccessToken(accessToken);
}
if (expires != 0)
{
facebook.setAccessExpires(expires);
}
if (!facebook.isSessionValid())
{
facebook.authorize(this, new String[] {
"email", "publish_stream", "create_event"
}, new DialogListener()
{
@Override
public void onCancel()
{
// Function to handle cancel event
}
@Override
public void onComplete(Bundle values)
{
// Function to handle complete event
// Edit Preferences and update facebook acess_token
editor = mPrefs.edit();
editor.putString("access_token", facebook.getAccessToken());
editor.putLong("access_expires", facebook.getAccessExpires());
editor.commit();
}
@Override
public void onError(DialogError error)
{
// Function to handle error
}
@Override
public void onFacebookError(FacebookError fberror)
{
// Function to handle Facebook errors
}
});
}
}
}
我希望我在主屏幕上添加的按钮,当我点击该按钮时,facebook登录对话框出现。但是这个代码给出了错误。但是如果没有按钮点击监听器,我运行这段代码,那么它不会出现错误,并且运行良好。请帮助…理解我想说的内容?请尝试以下链接:它对我有用。。你有什么错误吗?张贴你的日志Cathi Raja你能告诉我我犯了什么错误吗?代码的逻辑是什么?这样下次我就可以避免那个错误了。ThanksI创建了登录对话框作为一个单独的方法,之后我在单击按钮时调用该方法。就这样。如果你不明白,请告诉我你的疑问。嗨,Raja,最后一件事是如何在你给定的代码和wallposts中启用loggout功能。注销功能在这里不是独立的。是的,我知道它将是独立的,但如何实现它,它的代码是什么??