2012-03-21 3 views
0

Привет, друзей. Я применил вход в систему по учетной записи facebook, в моем приложении для Android, но проблема в том, что эта функция не работает во всех мобильных телефонах, например, если я запускаю приложение в 2.2 mobile, но когда я попытался в HTC Mobile, у которого есть версия 2.3, страница входа в систему подходит и внезапно исчезает.facebook login не работает во всех устройствах Android.

public class TestLoginListener implements DialogListener { 
    public void onComplete(Bundle values) { 
     testAuthenticatedApi(); 
    } 
    public void onFacebookError(FacebookError e) { 
     e.printStackTrace(); 
    } 
    public void onError(DialogError e) { 
     e.printStackTrace(); 
    } 
    public void onCancel() { 
    } 
} 

public boolean testAuthenticatedApi() { 

    if (!authenticatedFacebook.isSessionValid()) return false; 
    try { 
     Log.d("Tests", "Testing request for 'me'"); 
     String response1 = authenticatedFacebook.request("me") 

     JSONObject obj = Util.parseJson(response1); 

     fbid=obj.getString("id"); 
     String name=obj.getString("name"); 
     fbfirstname=obj.getString("first_name"); 
     fblastname=obj.getString("last_name"); 
     fbemail=obj.getString("email"); 
     } 
} 

ответ

1

Да, я думаю, что знаю причину. Я взломал с помощью facebook, и то, что вы описываете, обычно происходит, если на вашем устройстве уже установлено приложение facebook, и вы вошли в систему в настоящее время. Затем, когда вы пытаетесь войти в систему, он просто показывает логин на мгновение, прежде чем исчезнуть. Я предполагаю, что у вашего HTC есть приложение fb, и кто-то вошел в систему, в то время как у ваших других мобильных телефонов нет установленного приложения fb. Я думаю, что это происходит, потому что сервер fb не пингует, когда вы пытаетесь войти в систему. Вместо этого он пингует приложение fb.

Решение, с которым я столкнулся, состояло в том, чтобы изменить код, чтобы НЕ использовать SSO (Single Sign On). Я уверен, что другие не согласятся с этим подходом, но я решил не использовать SSO, и он отлично работает. Для этого используйте authorize(FORCE_DIALOG_AUTH).

Я сделал несколько копаний и нашел related вопрос.

Смежные вопросы