Как открыть страницу авторизации входа в приложение Facebook с помощью ручного потока входа
Мне нужно открыть страницу авторизации входа в приложение facebook без SDK для Facebook. Я попробовал этот метод с самого начала. здесь но он открывает страницу входа в систему в браузере/WebView.Я также попробовал этот метод от здесь но я получаю ошибку с ним ("требуется параметр redirect_uri"), хотя мой redirect_uri работает нормально. Я проверил это. Есть ли способ открыть страницу входа в приложение Facebook, установленное на устройстве? Мой код находится ниже:
Что я уже пробовал:
public class MainActivity extends AppCompatActivity { private final String clientId = "XXXXXXXXXXXXXXXX"; private final String responseType = "code"; private final String redirectUri = "https://waheedabbax.app.link/3LJBUFVfqP"; public String FACEBOOK_PAGE_ID = "https://www.facebook.com/v3.1" + "/dialog/oauth" + "?client_id=" + clientId + "&redirect_uri=" + redirectUri + "&response_type=" + responseType; public String FACEBOOK_URL = "https://www.facebook.com/v3.1" + "/dialog/oauth" + "?client_id=" + clientId + "&redirect_uri=" + redirectUri + "&response_type=" + responseType; /** * same as in manifest in intent filter */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Initialize the Branch object Branch.getAutoInstance(this); try { PackageInfo info = getPackageManager().getPackageInfo( "com.waheed.facebooklogin", // replace with your unique package name PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.i("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); } } catch (PackageManager.NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } Button loginButton = (Button) findViewById(R.id.loginbutton); loginButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { /* Intent intent = new Intent( Intent.ACTION_VIEW, Uri.parse("https://m.facebook.com/v3.1" + "/dialog/oauth" + "?client_id=" + clientId + "&display=popup"+ "&redirect_uri=" + redirectUri + "&response_type=" + responseType)); startActivity(intent);*/ Intent facebookIntent = new Intent(Intent.ACTION_VIEW); String facebookUrl = getFacebookPageURL(getApplicationContext()); Log.d("com.waheed",facebookUrl); facebookIntent.setData(Uri.parse(facebookUrl)); startActivity(facebookIntent); } }); } @Override protected void onResume() { super.onResume(); // the intent filter defined in AndroidManifest will handle the return from ACTION_VIEW intent Uri uri = getIntent().getData(); if (uri != null && uri.toString().startsWith(redirectUri)) { // use the parameter your API exposes for the code (mostly it's "code") String code = uri.getQueryParameter("code"); if (code != null) { Log.i("code", code); // get access token // we'll do that in a minute } else if (uri.getQueryParameter("error") != null) { // show an error message here } } } //method to get the right URL to use in the intent public String getFacebookPageURL(Context context) { PackageManager packageManager = context.getPackageManager(); try { int versionCode = packageManager.getPackageInfo("com.facebook.katana", 0).versionCode; if (versionCode >= 3002850) { //newer versions of fb app return "fb://facewebmodal/f?href=" + FACEBOOK_URL; } else { //older versions of fb app return "fb://page/" + FACEBOOK_PAGE_ID; } } catch (PackageManager.NameNotFoundException e) { return FACEBOOK_URL; //normal web url } }
Gerry Schmitz
"Я не хочу использовать SDK"?
Ни у кого нет на это времени.
Member 13951757
Facebook SDK увеличивает размер моего приложения, поэтому я избегаю его.
Richard MacCutchan
Используйте Facebook SDK, вот для чего он был создан.