Facebook登录按钮单击无所事事

时间:2015-08-10 14:21:01

标签: android facebook facebook-graph-api

我在Eclipse中成功设置了Facebook SDK 4.4.1。

我在MainActivity和XML中编写了一些简单的代码。

这是我的XML代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.facebookintegration.MainActivity" >

<com.facebook.login.widget.LoginButton
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:layout_marginBottom="30dp" />
</LinearLayout>

这里我只宣布Facebook按钮。

MainActivity.java

public class MainActivity extends FragmentActivity {
LoginButton lb;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getApplicationContext());
    setContentView(R.layout.activity_main);
    lb=(LoginButton)findViewById(R.id.login_button);
        }

@Override
protected void onActivityResult(int arg0, int arg1, Intent arg2) {
    // TODO Auto-generated method stub
    Log.i("Facebook Login Activity","Performed Successfully");
    super.onActivityResult(arg0, arg1, arg2);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
}

当我按下Facebook的登录按钮时,它会显示微调器,一段时间后它会返回MainActivity

我的应用是否正在执行登录?如果没有,我需要添加什么代码?

另外,如何获取用户详细信息的AccessToken

1 个答案:

答案 0 :(得分:3)

我认为你缺少的是回调。

试试这个: 声明你的回调管理器

 <entityFramework>
    <defaultConnectionFactory
       type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient"
    type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    <provider invariantName="MySql.Data.MySqlClient"
    type="MySql.Data.MySqlClient.MySqlProviderServices,
    MySql.Data.Entity.EF6, Version=6.9.7.0,
    Culture=neutral, PublicKeyToken=c5687fc88969c44d">
   </provider>
 </providers>

现在使用此

public static CallbackManager callbackmanager; 中创建它
onCreate()

不要忘记设置登录按钮的权限

callbackmanager = CallbackManager.Factory.create();

现在注册回调

loginButton.setReadPermissions("public_profile", "email", "user_friends");

你还需要调用回调管理器的onActivityResult()

loginButton.registerCallback(callbackmanager, new FacebookCallback<LoginResult>() {

            @Override
            public void onSuccess(LoginResult result) {
                Toast.makeText(getApplicationContext(), "Logged in successfully!", Toast.LENGTH_SHORT).show();
                Log.i(TAG, "Facebook login successful.");

                // you can make a new graph request for user info here
            }

            @Override
            public void onCancel() {
                Toast.makeText(getApplicationContext(), "Logging in canceled.", Toast.LENGTH_SHORT).show();
                Log.i(TAG, "Facebook login canceled.");
            }

            @Override
            public void onError(FacebookException error) {
                Toast.makeText(getApplicationContext(), "Error occurred while logging in. Please try again.", Toast.LENGTH_SHORT).show();
                Log.i(TAG, "Facebook login error.");
            }
        });

有关permorfing图形请求Facebook SDK Graph - Android

的详细信息