在Android应用中登录Facebook并下拉朋友列表。我如何获得accessToken?

时间:2015-05-25 03:46:25

标签: android facebook facebook-graph-api

从我的Android应用程序登录Facebook后,无法知道从哪里获取我的AccessToken。下面的代码是我用来登录的,它似乎工作。但是当我想获得朋友列表时,我不知道在哪里可以找到访问令牌。

这是我登录的代码的子集(来自Facebook的开发者网站)。

public class MainActivity extends ActionBarActivity {

...

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getApplicationContext());

    callbackManager = CallbackManager.Factory.create();
    loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions("user_friends");

    LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    Log.d(TAG, "Success!");
                }

                @Override
                public void onCancel() {
                    Log.d(TAG, "Canceled");
                }

                @Override
                public void onError(FacebookException exception) {
                    Log.d(TAG, String.format("Error: %s", exception.toString()));
                }
            });
}

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

}

这是我想用来获取我的清单的部分。

GraphRequest request = GraphRequest.newMeRequest(
    accessToken,
    new GraphRequest.GraphJSONObjectCallback() {
        @Override
        public void onCompleted(
               JSONObject object,
               GraphResponse response) {
            // Application code
        }
    });
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,link");
request.setParameters(parameters);
request.executeAsync();

如何设置变量 accessToken
有没有很好的例子可以通过简单的方法实现这一目标?我找到的所有东西对于我的等级看起来都很复杂,并且没有使用更新的sdk(4.1.2就是我所拥有的)但是旧的东西似乎被贬低了。

2 个答案:

答案 0 :(得分:1)

Facebook SDK v.4中有一些变化,例如:

  • 删除了会话 - AccessToken,LoginManager和CallbackManager 类取代并替换Session类中的功能。

  • 访问令牌 - 简而言之,您可以加载AccessToken.getCurrentAccessToken 来自缓存的SDK或应用程序是否从应用程序冷启动 书签。有关说明,请参阅Facebook Login for Android, Get
    Current Token

但您还需要编写一些代码,如链接中所述。

答案 1 :(得分:1)

登录后,使用此代码获取正在使用此应用程序的朋友的朋友列表。

  

现在Facebook没有提供朋友的完整列表。

GraphRequest.newMyFriendsRequest(AccessToken.getCurrentAccessToken(), new GraphJSONArrayCallback() {

                @Override
                public void onCompleted(JSONArray objects, GraphResponse response) {
                    // TODO Auto-generated method stub
                    try 
                    {
                        Log.d("Garph Friend ", objects.toString(2));
                        friendCallback(objects.toString(2));
                    } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }).executeAndWait();