如何使用Access Token Facebook SDK 4.4.1

时间:2015-07-27 08:55:38

标签: android facebook facebook-graph-api facebook-access-token facebook-sdk-4.0

我想使用Facebook SDK获取我的照片的网址,并显示它。我使用fb sdk登录,但每次打开我的应用程序时,我必须注销并再次登录才能拥有访问令牌。我可以在没有登录fb的情况下访问令牌吗?我可以访问我朋友页面的访问令牌吗?请帮帮我。

这是我的代码:

public class MainActivity extends Activity {

private CallbackManager callbackManager;
private ImageView image;
private LoginButton loginButton;
private AccessToken accessToken;
JSONObject jsObject = null;
public MyAsyncTask myAsy;
public String url;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getApplicationContext());
    setContentView(R.layout.activity_main);
    image = (ImageView) findViewById(R.id.image);

    callbackManager = CallbackManager.Factory.create();

    loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions(Arrays.asList("user_photos"));

    loginButton.registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    accessToken = loginResult.getAccessToken();

                    GraphRequest request = GraphRequest.newMeRequest(
                            accessToken,
                            new GraphRequest.GraphJSONObjectCallback() {
                                @Override
                                public void onCompleted(JSONObject object,
                                        GraphResponse response) {
                                    // Get images's url code


                                }
                            });
                    Bundle parameters = new Bundle();
                    parameters.putString("fields", "photos{images}");
                    request.setParameters(parameters);
                    request.executeAsync();
                }

                @Override
                public void onCancel() {
                    // info.setText("Login attempt cancelled.");
                }

                @Override
                public void onError(FacebookException e) {
                    // info.setText("Login attempt failed.");
                }
            });
}

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

1 个答案:

答案 0 :(得分:0)

1)不,如果没有先登录用户,就无法获得用户访问令牌。访问令牌有一个到期时间,必须不时续订/重新发布。

2)如果通过“我可以获得朋友页面的访问令牌”意味着如果您可以在没有朋友做任何事情的情况下为朋友获取访问令牌,那么不,您不能。您需要让该朋友像其他所有用户一样登录您的应用。