Интеграция приложения Disqus в Android

57
5

Я хочу добавить disqus в свое приложение для Android. Я проследил и нашел код для отображения комментариев disqus с идентификатором и коротким именем. Но я не могу найти документы для добавления секретного и открытого ключа. Затем идите вперед.

Уже зарегистрированный в Disqus, получил мой частный и открытый ключ. Теперь мне нужно знать,

1. Where to add the keys to the app.
2. How do I create id mapping to a particular page(activity/fragment).
3. Where am I supposed to give the short name?

спросил(а) 2014-03-11T16:54:00+04:00 6 лет, 6 месяцев назад
1
Решение
70

Я написал блог, в котором подробно описывается способ сделать это через WebView

http://globeotter.com/blog/disqus-android-code/

Надеюсь, поможет,

ответил(а) 2014-03-25T20:15:00+04:00 6 лет, 6 месяцев назад
80

@ndgreen, больше не работает! Безопасность перекрестных доменов обеспечивает загрузку внешнего JS. Мы должны сделать это сейчас:

String htmlComments = getHtmlComment("idPost", "youriddisqus");

yourWebView.loadDataWithBaseURL("http://youriddisqus.disqus.com/", htmlComments, "text/html", "UTF-8", "");

public String getHtmlComment(String idPost, String shortName) {

return "<html><head></head><body><div id='disqus_thread'></div></body>"
+ "<script type='text/javascript'>"
+ "var disqus_identifier = '"
+ idPost
+ "';"
+ "var disqus_shortname = '"
+ shortName
+ "';"
+ " (function() { var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;"
+ "dsq.src = '/embed.js';"
+ "(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })();"
+ "</script></html>";
}

И вуаля!

ответил(а) 2014-10-15T20:21:00+04:00 5 лет, 11 месяцев назад
40

<div id="disqus_thread"></div>
<script>
var disqus_config = function () {
this.page.url = 'linkOFPage'
this.page.identifier = 'page_identifier';
};

(function() { // DON'T EDIT BELOW THIS LINE
var d = document, s = d.createElement('script');
s.src = '//forumName.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>

затем сделал деятельность as--

webDisqus = (WebView) findViewById(R.id.disqus);
//set up disqus
WebSettings webSettings2 = webDisqus.getSettings();

webSettings2.setJavaScriptEnabled(true);

webSettings2.setBuiltInZoomControls(true);

webDisqus.requestFocusFromTouch();
String htmlComments = getHtmlComment(url, "forumName");
webDisqus.setWebViewClient(new MyWebViewClient(htmlComments,"text/html", null, ""));

webDisqus.setWebChromeClient(new WebChromeClient());
webDisqus.loadDataWithBaseURL("http://forumName.disqus.com/",htmlComments,"text/html","UTF-8","");

public String getHtmlComment(String idPost, String shortName) {
return "<html><head></head><body><div id='disqus_thread'></div></body>" + "<script type='text/javascript'>"
+ "var disqus_identifier = '" + idPost + "';" + "var disqus_shortname = '" + shortName + "';"
+ "var disqus_config = function () {this.page.identifier='" + idPost + "';" + "}" + ";"
+ " (function() { var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;"
+ "dsq.src = '/embed.js';"
+ "(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })();"
+ "</script></html>";

}

пользовательский веб-клиент просмотра file--

  public class MyWebViewClient extends WebViewClient 
{
private String html_comments, sType, obj, sMyURL;
public MyWebViewClient(String htmlComments, String string, String object, String URL) {
// TODO Auto-generated constructor stub
html_comments = htmlComments;
sType = string;
obj = object;
sMyURL = URL;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.i("page started", url);
}

@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Log.i("disqus error", "failed: " + failingUrl + ", error code: " + errorCode + " [" + description + "]");
}

public void onPageFinished(WebView view, String url) {

if (url.indexOf("logout") > -1 || url.indexOf("disqus.com/next/login-success") > -1) {
view.loadDataWithBaseURL("http://forumName.disqus.com/", html_comments, "text/html", "UTF-8", null);
}

if (url.indexOf("disqus.com/_ax/twitter/complete") > -1 || url.indexOf("disqus.com/_ax/facebook/complete") > -1
|| url.indexOf("disqus.com/_ax/google/complete") > -1) {
view.loadUrl("file:///android_res/raw/login.php");
}

if (url.indexOf("file:///android_res/raw/login.php") > -1) {
view.loadDataWithBaseURL("http://forumName.disqus.com/", html_comments, "text/html", "UTF-8", null);
}}

наконец, я сделал необработанную папку в res и сохранил файл ablank по имени login.php

надеюсь, это поможет кому-то. благодаря шатуну

ответил(а) 2016-01-21T13:26:00+03:00 4 года, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема