Android Webview Facebook Войти

В моем приложении я хочу, чтобы пользователи могли войти в свою учетную запись Facebook. После некоторых поисков я могу это выяснить, хотя я не думаю, что этот способ – лучший метод. Я использовал веб-просмотр в своем пользовательском интерфейсе и веб-клиент для проверки URL-адресов. Насколько я понимаю, на Android я должен обрабатывать все переадресации в моем веб-клиенте (переадресация Facebook, несколько перенаправления происходят, когда пользователь устанавливает свой адрес электронной почты и пароль). Но все, что мне нужно, это разобрать мой вывод xml и принять решение в соответствии с результатом вывода (перенаправить на мой домашний актив или сбой и т. Д.). Вот мой код. Пожалуйста, дайте свои предложения, если существует более подходящий метод.

public class FbLoginActivity extends Activity { String fbLoginBaseUrl = "{my server url}/facebook/redirector.jsp?"; private ProgressDialog progressBar; WebView webView; int count = 0; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fb_login); fbLoginBaseUrl += "usdId=NoSession:"; fbLoginBaseUrl += Subroutines.getInstance().getDeviceId() + "_L"; webView = (WebView) findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); progressBar = ProgressDialog.show(FbLoginActivity.this, "", "Page is loading..."); webView.setWebViewClient(new HelloWebViewClient()); webView.loadUrl(fbLoginBaseUrl); } private class HelloWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); Log.v(Subroutines.TAG, url); return true; } @Override public void onPageFinished(WebView view, String url) { Log.i(Subroutines.TAG, "Finished loading URL: " +url); // if login screen loading finishes, cancel the progressdialog.. // twice redirecting happens to this sub url.. String subFace = "m.facebook.com/login.php"; if(url.indexOf(subFace) != -1 && ++count == 2){ if (progressBar.isShowing()) { progressBar.cancel(); } } // Permission redirecting.. String loginSub = "www.facebook.com/connect/uiserver.php?method=permissions.request"; if(url.indexOf(loginSub) != -1){ progressBar = ProgressDialog.show(FbLoginActivity.this, "", "Logging in..."); } // finally if my server makes a response.. String sub = "{my server url}/facebook/connect.jsp"; if(url.indexOf(sub) != -1){ Log.v(Subroutines.TAG, "my server makes a response.."); // xml parsing stuff.. // use url content to parse } } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Log.e(Subroutines.TAG, "Error: " + description); } } } 

Я бы получил SDK для Facebook и использовал их функции

В двух словах вы это делаете:

 public Facebook facebook = new Facebook("appID"); 

Затем в создании или где угодно:

 facebook.authorize(this,String[] YourNeededPermissions, new DialogListener() { @Override public void onComplete(Bundle values) {} @Override public void onFacebookError(FacebookError error) {} @Override public void onError(DialogError e) {} @Override public void onCancel() {} }); 

Вы можете увидеть это здесь: http://developers.facebook.com/docs/guides/mobile/#android

У меня есть аналогичная проблема при интеграции регистрации в facebook с моей собственной (но я не разработчик Android). Я задал вопрос, как зарегистрироваться на Facebook с Android, но я не знал о веб-просмотре. Это кажется хорошим решением, могу ли я связаться с вами в чате или другими способами?

EDIT: Facebook только что обновил свою процедуру входа в систему: https://developers.facebook.com/docs/offline-access-deprecation/, как вы можете видеть, теперь маркер, который вы получаете из SSO (или любого другого токена клиента), связан только с Ваше приложение (есть секретный токен-приложение для проверки токена-приложения). Конечная точка теперь

 https://graph.facebook.com/oauth/access_token? client_id=APP_ID& client_secret=APP_SECRET& grant_type=fb_exchange_token& fb_exchange_token=EXISTING_ACCESS_TOKEN 

Таким образом, используя facebook sdk для android, выполните следующие шаги: 1) получить подписку пользователя; 2) отправить токен на сервер; 3) сервер будет проверять токен против его идентификатора приложения и приложения. 4) добавить свои собственные функции безопасности

Intereting Posts