如何在Android中实现Facebook Graph API,以便在实现Facebook登录后获取用户数据



我已经在Android Studio中实现了facebook登录。现在我想实现图形 API 来访问用户数据并将其保存在 firebase 数据库中,但我没有任何想法要实现,因为我已经使用了 facebook 帮助,但代码显示错误。

我还必须实现以获取用户权限,而不仅仅是访问公共配置文件。如果有人能一步一步地指导我,我们将不胜感激。

谢谢

new GraphRequest(
                 loginResult.getAccessToken(),
                 "/{user-id}/likes",
                 null,
                 HttpMethod.GET,
                 new GraphRequest.Callback() {
                     public void onCompleted(GraphResponse response) {
                         /* handle the result */
                         textViewLongitude.setText(String.valueOf(response));
                     }
                 }).executeAsync();

从您的活动或片段中调用 getFBUser(accessToken(

    FacebookUtils.getInstance(MainActivity.this).getFBUser(accessToekn);

添加此类并尝试

import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import com.facebook.AccessToken;
import com.facebook.GraphRequest;
import com.facebook.GraphResponse;
import com.facebook.HttpMethod;
 import org.json.JSONObject;
public class FacebookUtils {
private static FacebookUtils _FacebookUtils;
private static Context context;
private String TAG = FacebookUtils.class.getSimpleName();
private FacebookUtils(Context context) {
    FacebookUtils.context = context;
}
public static FacebookUtils getInstance(Context context) {
    if (null == _FacebookUtils) {
        synchronized (FacebookUtils.class) {
            if (null == _FacebookUtils) {
                _FacebookUtils = new FacebookUtils(context);
            }
        }
    }
    return _FacebookUtils;
}
public void getFBUser(final AccessToken accessToken) {
    GraphRequest request = GraphRequest.newMeRequest(
            accessToken,
            new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(
                        JSONObject object,
                        GraphResponse response) {
                    Log.d(TAG, "FB details are: " +
                            response.toString());
                    Log.d(TAG, "FB response.getRawResponse(): " +
                            response.getRawResponse());
                    Log.d(TAG, "FB response.getJSONObject(): " +
                            response.getJSONObject());
                    Bundle bundle = new Bundle();
                    bundle.putString("Details", response.getRawResponse());
                    Message message = new Message();
                    message.setData(bundle);
                   // callback.handleMessage(message);
                    try {
                        getFbUserDetails(response.getJSONObject().getString("id"), accessToken);
                    } catch (Exception exception) {
                        exception.toString();
                    }
                }
            });
    Bundle parameters = new Bundle();
    parameters.putString("fields", "id,name,link,email");
    request.setParameters(parameters);
    request.executeAsync();
}
public void getFbUserDetails(String userId, AccessToken accessToken) {
    new GraphRequest(
            accessToken,
            "/" + userId,
            null,
            HttpMethod.GET,
            new GraphRequest.Callback() {
                public void onCompleted(GraphResponse response) {
        /* handle the result */
                    Log.d(TAG, "Response of User Details: " + response.toString());
                    Bundle bundle = new Bundle();
                    bundle.putString("Details", response.toString());
                    Message message = new Message();
                    message.setData(bundle);
                   // callback.handleMessage(message);
                }
            }
    ).executeAsync();
  }
}

最新更新