gpt4 book ai didi

Android Facebook 使用 LoginManager & 设置权限

转载 作者:行者123 更新时间:2023-11-29 20:08:01 26 4
gpt4 key购买 nike

我正在尝试使用 LoginManager 并在用户登录时设置权限。我希望 publish_actions 对用户可用。

我像这样使用 LoginManager:

    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
final AccessToken accessToken = loginResult.getAccessToken();
GraphRequestAsyncTask request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject user, GraphResponse graphResponse) {
//Do stuff when the login is complete
}
}).executeAsync();
}

@Override
public void onCancel() {
Toast.makeText(getApplicationContext(), "Facebook Login Cancelled", Toast.LENGTH_LONG).show();
}

@Override
public void onError(FacebookException exception) {
Toast.makeText(getApplicationContext(), "Facebook Login Error", Toast.LENGTH_LONG).show();
}
});

现在,我想添加一个权限行:

LoginManager.getInstance().logInWithPublishPermissions(StartPage.this, Arrays.asList("publish_actions"));

虽然我不确定把它放在哪里。当我把它放在第一个 LoginManager 之外(之前或之后)时,我得到了一些登录 facebook 的无限循环,并且 facebook 模式说“你已经允许我的应用程序”。

使用LoginManager时如何设置权限?另外,有没有办法在登录时显示“您已经允许此应用”屏幕?

为清楚起见,

更新

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
FacebookSdk.sdkInitialize(this.getApplicationContext());
setContentView(R.layout.activity_start_page);
callbackManager = CallbackManager.Factory.create();

...

final LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button);
loginButton.setReadPermissions("user_friends");
// If using in a fragment
//loginButton.setFragment();
// Other app specific specialization

// Callback registration
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
final AccessToken accessToken = loginResult.getAccessToken();
GraphRequestAsyncTask request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject user, GraphResponse graphResponse) {
loginButton.clearPermissions();
loginButton.setPublishPermissions(Arrays.asList("publish_actions"));

facebook_id = user.optString("id");
facebook_name.setText(user.optString("name"));
facebook_name.setVisibility(View.VISIBLE);
exc_share_facebook.setVisibility(View.GONE);
share_facebook_user.setVisibility(View.VISIBLE);
share_facebook_auto.setVisibility(View.VISIBLE);
profilePictureView.setProfileId(user.optString("id"));
}
}).executeAsync();
}

@Override
public void onCancel() {
// App code
}

@Override
public void onError(FacebookException exception) {
// App code
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);

}

最佳答案

你不能同时授予读取和发布权限,先授予读取权限,然后再请求发布权限

_loginfb=(LoginButton)findViewById(R.id.fblogin);

_loginfb.setReadPermissions(mReadPermissions);

_loginfb.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {

final Bundle params = new Bundle();
params.putString("fields", "id, email, name, picture.type(large)");

System.out.println("Success callback");
GraphRequest mRequest = GraphRequest.newMeRequest(
loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject json, GraphResponse response) {
_loginfb.clearPermissions();
_loginfb.setPublishPermissions(mPublishPermissions);
if (response.getError() != null) {
// handle error

} else {

String jsonresult = String.valueOf(json);



}
}
});
mRequest.setParameters(params);
mRequest.executeAsync();

}

@Override
public void onCancel() {

}


@Override
public void onError(FacebookException error) {
// TODO Auto-generated method stub
System.out.println(error);
}
});

关于Android Facebook 使用 LoginManager & 设置权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35411677/

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