2017-07-30 183 views
0

我正在尝试使用Facebook API来允许用户登录到我的应用程序,登录操作成功完成,并且获取访问令牌,但是当我使用GraphRequest获取用户的信息它的响应和对象返回null,我完全新手在android开发。 这里是我的代码:Android Facebook sdk GraphRequest在获取用户信息时返回null

public class SignIn extends Fragment { 

     private LoginButton loginButton; 
     private CallbackManager callbackManager; 
     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
           Bundle savedInstanceState) 
     { 
      View v = inflater.inflate(R.layout.fragment_sign_in, container, false); 
      Button button = (Button) v.findViewById(R.id.button_signin); 
      button.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Intent i = new Intent(getActivity(),Home.class); 
        startActivity(i); 
        getActivity().finish(); 
       } 
      }); 

      callbackManager = CallbackManager.Factory.create(); 
      loginButton = (LoginButton) v.findViewById(R.id.facebook_button); 
      loginButton.setReadPermissions("email"); 
      loginButton.setFragment(this); 
      loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
       @Override 
       public void onSuccess(LoginResult loginResult) { 
        GraphRequest request = GraphRequest.newMeRequest(
          AccessToken.getCurrentAccessToken(), 
          new GraphRequest.GraphJSONObjectCallback() { 
           @Override 
           public void onCompleted(JSONObject object, GraphResponse response) { 
=         try { 
             Log.d("id",object.getString("id")) ; 
             Log.d("email",object.getString("email")) ; 

            } catch (JSONException e) { 
             e.printStackTrace(); 
             Toast.makeText(getActivity().getApplicationContext(),e.getMessage(),Toast.LENGTH_LONG).show(); 
            } 
           } 
          }); 
        Bundle parameters = new Bundle(); 
        parameters.putString("fields", "id,name,link"); 
        request.setParameters(parameters); 
        request.executeAsync(); 
       } 

       @Override 
       public void onCancel() { 
       } 

       @Override 
       public void onError(FacebookException exception) { 
       } 
      }); 
      return v ; 
     } 

     @Override 
     public void onActivityResult(int requestCode, int resultCode, Intent data) 
     { 
      callbackManager.onActivityResult(requestCode, resultCode, data); 
     } 
    } 

的build.gradle(项目)(如果需要)

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.3.3' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
     mavenCentral() 
    } 
} 

task clean(type: Delete) { 
    delete rootProject.buildDir 
} 

回答

1

我理解了它我忘了在清单中添加此:

<activity android:name="com.facebook.FacebookActivity" 
    android:configChanges= 
     "keyboard|keyboardHidden|screenLayout|screenSize|orientation" 
    android:label="@string/app_name" /> 
相关问题