Android 如何在活动登录中设置facebook权限

Android 如何在活动登录中设置facebook权限,android,facebook,android-fragments,facebook-android-sdk,Android,Facebook,Android Fragments,Facebook Android Sdk,我使用FacebookSDK创建了一个android应用程序,它可以很好地处理登录片段,我请求了如下权限: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.activity_login_activity2, container, false

我使用FacebookSDK创建了一个android应用程序,它可以很好地处理登录片段,我请求了如下权限:

  @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.activity_login_activity2, container, false);

    LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);
    authButton.setFragment(this);
    authButton.setReadPermissions(Arrays.asList("user_about_me","user_likes", "user_status","email","user_relationships" ));
现在我需要做同样的事情,但是facebook登录需要在一个活动中,这样前面的代码就不起作用了,因为authButton.setFragment(this);“需要一个我没有的片段

另外,如果我不使用
“authButton.setFragment(this);”
我无法设置权限,因为
“authButton.setReadPermissions”
将生成
nullPointerException


因此,我要问的是如何在我的活动中将我的权限传递给facebook登录

以以下方式进行活动,无需设置
authButton.setFragment(this)

包com.example.integration

import java.util.Arrays;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import com.facebook.Request;
import com.facebook.Response;
import com.facebook.Session;
import com.facebook.SessionState;
import com.facebook.model.GraphUser;
import com.facebook.widget.LoginButton;

public class MainActivity extends Activity {

    private LoginButton fbLoginBtn;

    private SharedPreferences mPrefs;

    private Session.StatusCallback callback = new Session.StatusCallback() {
        @Override
        public void call(final Session session, final SessionState state, final Exception exception) {
            onSessionStateChange(session, state, exception);
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        fbLoginBtn = (LoginButton) findViewById(R.id.fb_login_button);
        fbLoginBtn.setReadPermissions(Arrays.asList("email"));

        mPrefs = getPreferences(MODE_PRIVATE);

    }

    @Override
    public void onResume() {
        super.onResume();
        Session session = Session.getActiveSession();
        if (session != null &&
                (session.isOpened() || session.isClosed()) ) {
            onSessionStateChange(session, session.getState(), null);
        }

    }

    private void onSessionStateChange(final Session session, SessionState state, Exception exception) {

        if (state.isOpened()) {
            Editor edit = mPrefs.edit();
            edit.putString("access_token", session.getAccessToken());
            edit.putString("expires", session.getExpirationDate() + "");
            edit.commit();
            Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
                @Override
                public void onCompleted(GraphUser user, Response response) {

                    if (user != null) {
                        String firstName = user.getFirstName();
                        String lastName = user.getLastName();
                        String id = user.getId();
                        String email = (String) user.asMap().get("email");

                        Log.i("facebookid", id);
                        Log.i("firstName", firstName);
                        Log.i("lastName", lastName);
                        Log.i("AccessToken", session.getAccessToken());
                        Log.i("Email", email);

                        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                        intent.putExtra("name", firstName);
                        startActivity(intent);
                    }
                }

            });

        } 

        else if (state.isClosed()) {
            Toast.makeText(this, "Please Login", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Session.getActiveSession().onActivityResult(MainActivity.this, requestCode, resultCode, data);
    }
}

可以从nullPointerException发布堆栈跟踪吗?如果要将登录按钮添加到活动中,则不需要执行任何操作。