public class AuthenticationDialog extends Dialog {
private String TAG = AuthenticationDialog.class.getSimpleName();
private AuthenticationListener listener;
private Context context;
private WebView webView;
private final String url = "https://api.instagram.com/" + "oauth/authorize/?app_id=" +
getResources().getString(R.string.app_id)
+ "&redirect_uri="
+ getResources().getString(R.string.redirect_url)
+ "&response_type=code"
+ "&scope=user_profile,user_media";
public AuthenticationDialog(@NonNull Context context, AuthenticationListener listener) {
super(context, android.R.style.Theme_Black_NoTitleBar_Fullscreen);
this.context = context;
this.listener = listener;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.auth_dialog);
this.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
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.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 " + url);
if (url.contains("?code=") && !authComplete) {
Log.d(TAG, " inside access_token");
access_token = url;
//get the whole token after "=" sign
access_token = access_token.replace("https://www.instagram.com/?code=","");
access_token = access_token.replace("#_","");
Log.d(TAG, "token: " + access_token);
authComplete = true;
listener.onTokenReceived(access_token);
webView.loadUrl("https://instagram.com/accounts/logout/");
dismiss();
} else if (url.contains("?error")) {
Log.d(TAG, "getting error fetching access token");
dismiss();
} else {
Log.d(TAG, "outside both" + url.toString());
}
}
});
}
}
如果您在使用Instagram的API时遇到了问题,想要直接与客服进行交流解决,那真的非常困难。因为我自己也面临着同样的问题。老实说,https://help.instagram.com并没有给我提供很多帮助,因为很难找到支持服务窗口。
以下是向Instagram客服团队报告您面临问题的方法:
通过Instagram Android应用程序
这就是我解决问题并恢复注册新客户按钮的方法:)