anb*_*ber 10 authentication android facebook login
我需要登录Facebook并获得相同的字段,如电子邮件等.我使用Facebook SDK,然后在developers.facebook中设置我的Android密钥Hash并设置"Configured for Android SSO".在模拟器和一些设备中,应用程序工作正常.
但是如果设备上安装了正式的Facebook应用程序,我的应用程序就无法运行:我按下登录按钮,但是我没有看到带有网络视图的对话框,我的密码和登录被要求.看起来Stack Overflow问题中的问题使用Android SDK的facebook.authorize不会调用onActivityResult或Stack Overflow问题Android Facebook API单点登录?,但我无法理解如何解决它.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
this.facebookConnector.getFacebook().authorizeCallback(requestCode, resultCode, data);
}
public void getAccessToken() {
SessionEvents.AuthListener listener = new SessionEvents.AuthListener() {
@Override
public void onAuthSucceed() {
setupAccessToken(facebookConnector.getFacebook().getAccessToken());
}
@Override
public void onAuthFail(String error) {
Toast.makeText(getApplicationContext(), getString(R.string.error_login), Toast.LENGTH_SHORT).show();
}
};
SessionEvents.addAuthListener(listener);
facebookConnector.login();
}
Run Code Online (Sandbox Code Playgroud)
public class FacebookConnector {
public void login() {
if (!facebook.isSessionValid()) {
facebook.authorize(this.activity, this.permissions, new LoginDialogListener());
}
}
private final class LoginDialogListener implements DialogListener {
public void onComplete(Bundle values) {
SessionEvents.onLoginSuccess();
}
public void onFacebookError(FacebookError error) {
SessionEvents.onLoginError(error.getMessage());
}
public void onError(DialogError error) {
SessionEvents.onLoginError(error.getMessage());
}
public void onCancel() {
SessionEvents.onLoginError("Action Canceled");
}
}
}
Run Code Online (Sandbox Code Playgroud)
Dip*_*iya 20
请更新以下应用程序代码.它会解决你的问题.
public void loginAndPostToWall() {
facebook.authorize(this, PERMISSIONS, Facebook.FORCE_DIALOG_AUTH,
new LoginDialogListener());
}
Run Code Online (Sandbox Code Playgroud)
我和你一样有同样的问题.最后,我用这个解决了:
打开Facebook SDK提供的Facebook.java,然后像这样更改:
public void authorize(Activity activity, String[] permissions,
int activityCode, final DialogListener listener) {
boolean singleSignOnStarted = false;
mAuthDialogListener = listener;
/*
// Prefer single sign-on, where available.
if (activityCode >= 0) {
singleSignOnStarted = startSingleSignOn(activity, mAppId,
permissions, activityCode);
}
// Otherwise fall back to the traditional dialog.
if (!singleSignOnStarted) {
*/
startDialogAuth(activity, permissions);
// }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13747 次 |
| 最近记录: |