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
}