gpt4 book ai didi

android - 无法从 GraphRequest Facebook 获取值

转载 作者:行者123 更新时间:2023-11-30 00:56:29 34 4
gpt4 key购买 nike

我正在使用 Facebook SDK 4.16.1 通过使用 Profile 我可以获得 first name, last name, name and id 我的代码是这样的

public class LoginActivity extends Activity {

String id, fname, lname, email, name, gender, locale, verified;
private CallbackManager callbackManager;
private AccessTokenTracker accessTokenTracker;

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

FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();

accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(AccessToken oldToken, AccessToken newToken) {
}
};

LoginButton loginButton = (LoginButton)findViewById(R.id.login_button);
loginButton.setReadPermissions(Arrays.asList(Constants.FACEBOOK_PERMISSIONS));

FacebookCallback<LoginResult> callback = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
AccessToken accessToken = loginResult.getAccessToken();
Profile profile = Profile.getCurrentProfile();

FB_TOKEN=loginResult.getAccessToken().getToken();

GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
// Application code
response.getError();
Log.e("JSON:", object.toString());

try {
email = object.getString("email");
gender = object.getString("gender");
locale = object.optString("locale");
verified = object.optString("verified");
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,link,birthday,first_name,last_name,email,gender,verified,locale");
request.setParameters(parameters);
request.executeAsync();


id = profile.getId();
fname = profile.getFirstName();
lname = profile.getLastName();
name = profile.getName();

nextActivity(profile);
Toast.makeText(getApplicationContext(), "Logging in...", Toast.LENGTH_SHORT).show();
}

@Override
public void onCancel() {
}

@Override
public void onError(FacebookException e) {
}
};

loginButton.registerCallback(callbackManager, callback);
}

}

我的常量看起来像这样

public static final String[] FACEBOOK_PERMISSIONS = new String[] {
"public_profile",
"user_friends",
"email" };

我正在尝试获取电子邮件、性别、区域设置以及是否已经过验证。我将如何获得其他信息?对于 Profile

获取的项目,我的总是 null expect

更新

我像这样更新我的GraphRequest

GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
// Application code
response.getError();
Log.e("JSON-RESULT:", object.toString());

JSONObject jsonObject = null;
try {
jsonObject = new JSONObject(object.toString());
email = jsonObject.getString("email");
gender = jsonObject.getString("gender");
locale = jsonObject.getString("locale");
verified = jsonObject.getString("verified");

Log.e(TAG, email + " This is the email");
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,link,birthday,first_name,last_name,email,gender,verified,locale");
request.setParameters(parameters);
request.executeAsync();

在我的 Logcat 中,它显示我正确设置了电子邮件和其他设置,但是当您放置 breakpoints 时它不会进入 GraphRequest ,因此我的全局 variable 电子邮件仍然为空。即使在 Log.e("JSON:", object.toString());Log.e(TAG, email + "This is the email");它显示我得到并设置了值。我想知道如何获取 Bundle 的值?

最佳答案

尝试使用下面的代码获取其他信息.....

 private FacebookCallback<LoginResult> mFacebookCallback = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// Log.d("Login", "onSuccess");
GraphRequest.newMeRequest(
loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject me, GraphResponse response) {
if (response.getError() != null) {
// handle error
} else {
email = me.optString("email");
String id = me.optString("id");
String email=me.optString("email");
String name= me.optString("name");
String gender= me.optString("gender");
String verified= me.optBoolean("is_verified") + "";
}
}
}).executeAsync();
}


@Override
public void onCancel () {
// Log.d("Login", "onCancel");
}

@Override
public void onError (FacebookException e){
// Log.d("Login", "onError " + e);
}
};

关于android - 无法从 GraphRequest Facebook 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40078479/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com