Facebook sdk 只能以读取权限或发布权限登录,但如果我两者都想要怎么办?我只在登录注册用户或验证用户身份时需要读取权限。
所以我认为正确的方法是首先使用 SignInMode.READ
进行signIn
,然后再次signIn
,但现在使用 SignInMode。发布
问题是当我第二次尝试登录时,它只是加载 accessToken,我尝试将 facebook.signOut()
放在中间,但什么也没有...
facebook.signIn(SignInMode.READ, readPermissions, new GDXFacebookCallback<SignInResult>() {
@Override
public void onSuccess(SignInResult result) {
// Login successful
clientManager.login(result.getAccessToken().getToken());
}
@Override
public void onError(GDXFacebookError error) {
// Error handling
}
@Override
public void onCancel() {
}
@Override
public void onFail(Throwable t) {
}
});
//after the user log ins, the app ask for publish permissions, and I
// try to get it by logging in again but now wit `SignInMode.PUBLISH` like so....
facebook.signIn(SignInMode.PUBLISH, publishPermissions, new GDXFacebookCallback<SignInResult>() {
@Override
public void onSuccess(SignInResult result) {
// Login successful
clientManager.login(result.getAccessToken().getToken());
}
@Override
public void onError(GDXFacebookError error) {
// Error handling
}
@Override
public void onCancel() {
}
@Override
public void onFail(Throwable t) {
}
});
我在这里想问的是,在使用 SignInMode.READ
登录后,如何获得能够发布的 accessToken?
最佳答案
我是 gdx-facebook 扩展的开发者。
您的操作正确,请先使用读取权限登录,然后使用发布权限登录。
有2种情况:
您尚未授权该应用程序,或者授权该应用程序的权限少于您请求的权限。 -> 您将获得一个新 token ,其中包含所有现有的和新请求的权限。所有现有 token 均无效。
您已授予所有请求的权限。 -> 您将获得最新的 token 。
What im trying to ask here is how I get an accessToken capable of publishing after I singin with SignInMode.READ?
只需请求您需要的权限,您就会获得包含新旧权限的新升级 token 或已包含权限的旧 token 。
您可能已经授予了权限,这就是 token 不会更改的原因。查看您的 FB 设置 -> 应用程序以查看您授予了哪些权限。 token 的前 10-20 个字符通常看起来相似。不要对此感到困惑。
关于java - Libgdx GDXFacebook 发布权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45873978/