Интеграция входа в Android InstagramAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Интеграция входа в Android Instagram

Сообщение Anonymous »

Я пытаюсь выполнить вход в социальную сеть через Instagram без Graph API и прочитать все необходимое, связанное с ним, из документации Instagram и StackOverflow.

Следующие вещи, которые я сделал в своем проекте до сих пор:
  • Войти в учетную запись разработчика Instagram через мое имя пользователя и пароль.
  • Управление клиентом > Зарегистрируйте нового клиента и добавьте сгенерированный клиент Идентификатор, секретный ключ и URL-адрес перенаправления в моем постоянном файле.
  • А для веб-представления мой полный URL-адрес: https://api.instagram.com/oauth/authori ... ic_content
  • Когда я ввожу имя пользователя и пароль в WebView, а не перемещаюсь по URL-адресу перенаправления, это постоянно показывает мне ошибку в WebView как: {"error_type": "OAuthException", "code": 400, "error_message": "Вы должны указать действительные параметры client_id, response_type и redirect_uri"
  • Я хочу получить access_token, но он показывает мою ошибку.
Ниже мой необходимый код:

MainActivity.java

Код: Выделить всё

public class MainActivity extends AppCompatActivity implements AuthenticationListener {

private AuthenticationDialog authDialog;
private Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
context = this;
}

@Override
public void onCodeReceived(String token) {
if (token == null)
return;
}

@OnClick(R.id.buttonLogin)
public void loginClick() {
authDialog = new AuthenticationDialog(this, this);
authDialog.setCancelable(true);
authDialog.getWindow().setLayout(((getWidth(context) / 100) * 90), LinearLayout.LayoutParams.MATCH_PARENT);
authDialog.getWindow().setGravity(Gravity.CENTER);
authDialog.show();
}

public static int getWidth(Context context) {
DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager windowmanager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
windowmanager.getDefaultDisplay().getMetrics(displayMetrics);
return displayMetrics.widthPixels;
}
}
AuthenticationDialog.java

Код: Выделить всё

public class AuthenticationDialog extends Dialog {
private String TAG = AuthenticationDialog.class.getSimpleName();
private AuthenticationListener listener;
private Context context;
private WebView webView;

private final String url = Constants.BASE_URL + "oauth/authorize/?client_id=" +
Constants.INSTAGRAM_CLIENT_ID
+ "&redirect_url="
+ Constants.REDIRECT_URL
+ "&response_type=token"
+ "&scope=basic+public_content";

public AuthenticationDialog(@NonNull Context context, AuthenticationListener listener) {
super(context);

this.context = context;
this.listener = listener;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.auth_dialog);
initializeWebView();
}

private void initializeWebView() {
webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);

webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
Log.d(TAG, "url:  " + url);
//webView.loadUrl("http://api.instagram.com/");
//webView.loadUrl("https://api.instagram.com/oauth/authorize/?client_id=af7efcca661e43459b1e502af7ddb689&redirect_uri=https://instagram.com/&response_type=token&scope=basic+public_content");
webView.setWebViewClient(new WebViewClient() {

String access_token;
boolean authComplete;

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.d(TAG, "onPageStarted called");
}

@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.d(TAG, "onPageFinished called");
if (url.contains("#access_token=") && !authComplete) {
Log.d(TAG, " inside access_token");
Uri uri = Uri.parse(url);
access_token = uri.getEncodedFragment();
//get the whole token after "=" sign
access_token = access_token.substring(access_token.lastIndexOf("=") + 1);
Log.d(TAG, "token: " + access_token);
authComplete = true;
listener.onCodeReceived(access_token);
dismiss();
} else if (url.contains("?error")) {
Log.d(TAG, "getting error fetching access token");
dismiss();
} else {
Log.d(TAG, "outside both" + url.toString());
}
}
});
}
}
и, согласно журналам, код появляется последним, иначе «вне обоих». Также WebView показывает ошибку, о которой я упоминал в пункте №. 4.

Кто-нибудь может помочь?

Подробнее здесь: https://stackoverflow.com/questions/523 ... ntegration
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»