微信分享链接的缩略图和标题

一、微信内分享 在微信内打开链接后,点右上角【…】选择【发送给朋友】或【分享到朋友圈】,这种分享方式获取缩略图的方法: 方法一:在页面 body 最上方添加 300*300 像素的 img 如该图片不需要显示,可以用 css 隐藏,但不能直接对 img 设置 display: none;。 可以在父层 div 上设置 display: none; 或者对 img 设置 position: absolute; visibility: hidden;。 <img src=&quot;/img/thumbnail.png&quot; alt=&quot;&quot;></div> 1 " data-snippet-id="ext.2607b3963245b14ba18790d96be6e596" data-snippet-saved="false" data-codota-status="done">`&lt;div style="display:none;"&gt;&lt;img src="/img/thumbnail.png" alt=""&gt;&lt;/div&gt;` 方法二:通过微信 JS-SDK 的分享接口 这种方法需要一个微信公众号的 app_id,同时需要一个后端服务生成 signature。好处是可以定制分享的标题、缩略图、描述。 二、从浏览器分享 在浏览器打开链接后,点分享图标,选择【微信】,这种分享方式获取缩略图的方法: 在页面的 head 部分添加 Open Graph Metadata: <meta property=&quot;og:title&quot; content=&quot;页面标题&quot;> <meta property=&quot;og:description&quot; content=&quot;页面描述&quot;> <meta property=&quot;og:image&quot; content=&quot;http://www.example.com/img/thumbnail.png&quot;> <meta property=&quot;og:url&quot; content=&quot;http://www.example.com/&quot;> 1 2 3 4 5 " data-snippet-id="ext.d5f2b073507882789543238b1b2f0a2b" data-snippet-saved="false" data-codota-status="done">`&lt;meta property="og:type" content="website" /&gt; &lt;meta property="og:title" content="页面标题"&gt; &lt;meta property="og:description" content="页面描述"&gt; &lt;meta property="og:image" content="http://www.example.com/img/thumbnail.png"&gt; &lt;meta property="og:url" content="http://www.example.com/"&gt;` 其中 og:image 影响浏览器分享时的图标,需要指定图片的完整路径。 ...

2019年3月2日 · 2 分钟 · 天边的星星

微信小程序开发总结

不支持HTML、没有 Dom。网页用的 JS、CSS 基本要全部重写,WXML 的语法和 HTML 差异还挺大,基本是一个个照着手册的属性去改。CSS 选择器不支持级联。 小程序源码打包后的大小限制为1M,超大传不上去。单次通过 wx.request传输的数据最大也是1M。 MINA 框架实现的 tab bar,最多5个 tab;通过 wx. navigateTo 推入后台的页面最多5层,超过会无法打开新页面。 小程序没有 webview 控件,自带的 view 和 text 又不支持图文混排,还不能动态 set WXML …… 所以小程序上的富文本也就只能做到固定焦点图+纯文本+emoji了 [二哈] 不支持 A 标签,无法打开普通网页。 未经腾讯公司授权的情况下,微信小程序的添加,必须是免费的,不得设置付费添加。 强制用户分享或关注:分享或关注后才能继续下一步操作。包括但不限于:分享或关注后方可解锁功能或能力,分享或关注后方查阅、下载图片或视频等。 不得滥用模板消息和客服消息,包括但不限于利用模板消息和客服消息骚扰用户、广告营销、向用户发送与客服咨询无关的任何文案、图片。 完成注册后,如帐号长期未登录,微信小程序可能被终止使用,终止使用后注册所使用的邮箱、身份证、微信号等信息可能将被取消注册状态。 除个体工商户类型可认证5个小程序外,其他类型一个主体可认证50个小程序 标签数量不得少于2个,最多不得超过5个,为确保点击区域,建议标签数量不超过4项 绑定开发者 > 登录微信公众平台小程序,进入用户身份- 开发者,新增绑定开发者。 > 个人主体小程序最多可绑定5个开发者,10个体验者。 > 未认证的组织类型小程序最多可绑定10个开发者,20个体验者 > 已认证的小程序最多可绑定20个开发者,40个体验者 > 代码大小限制2M以内(包括图片等所有资源) > 请问现在小程序代码支持多大? > 采用分包,可以到 4 M > wx.setStorage(OBJECT) 小程序存储的容量有多大限制?目前每个小程序限制5M 绑定开发者 ` 个人主体小程序最多可绑定5个开发者,10个体验者。 未认证的组织类型小程序最多可绑定10个开发者,20个体验者 已认证的小程序最多可绑定20个开发者,40个体验者。 ` 请求必须是https ...

2018年5月30日 · 1 分钟 · 天边的星星

高仿微信对话列表滑动删除效果

转载:http://blog.csdn.net/singwhatiwanna/article/details/17515543 前言 用过微信的都知道,微信对话列表滑动删除效果是很不错的,这个效果我们也可以有。思路其实很简单,弄个ListView,然后里面的每个item做成一个可以滑动的自定义控件即可。由于ListView是上下滑动而item是左右滑动,因此会有滑动冲突,也许你需要了解下android中点击事件的派发流程,请参考Android源码分析-点击事件派发机制。我的解决思路是这样的:重写ListView的onInterceptTouchEvent方法,在move的时候做判断,如果是左右滑动就返回false,否则返回true;重写SlideView(即自定义item控件)的onTouchEvent方法来处理滑动。整个思路没有问题,滑动冲突也解决了,可是ListView无法得到焦点了,也就是ListView无法处理点击事件了。让我们回想下问题出在哪里:我的理解是这样的,上述处理滑动本身没有问题,但是有一个副作用,就是会让外层View失去焦点且无法处理点击事件。常见的滑动冲突场景,比如launcher内部嵌入ListView却是没有问题的,因为这个时候launcher不需要获得焦点,需要获得焦点的是内部的ListView。因此,上述处理方式对于外部需要获得焦点的情况(比如外部是ListView)就不太适合了。于是我就和ttdevs探讨,发现他采用了另外一种思路,我从来没有想过还可以这样玩。下面介绍他的思路。 新的思路 不考虑那么复杂,不采用主流玩法,所有的事件均由外层的ListView做拦截,同时把事件传递给SlideView做滑动,这种实现的确可以达到效果,而且代码很简单,根本不需要处理什么复杂的滑动冲突。 效果 下面分别为微信和高仿效果 代码分析 先看SlideView是如何实现的 看layout xml: **[html]** [view plain](http://blog.csdn.net/singwhatiwanna/article/details/17515543#)[copy](http://blog.csdn.net/singwhatiwanna/article/details/17515543#)[![在CODE上查看代码片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/125514)[![派生到我的代码片](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/125514/fork) - <span class="tag"><?</span><span class="tag-name">xml</span> <span class="attribute">version</span>=<span class="attribute-value">&#8220;1.0&#8221;</span> <span class="attribute">encoding</span>=<span class="attribute-value">&#8220;utf-8&#8221;</span><span class="tag">?></span> - <span class="tag"><</span><span class="tag-name">merge</span> <span class="attribute">xmlns:android</span>=<span class="attribute-value">&#8220;http://schemas.android.com/apk/res/android&#8221;</span> - <span class="attribute">android:layout_width</span>=<span class="attribute-value">&#8220;match_parent&#8221;</span> - <span class="attribute">android:layout_height</span>=<span class="attribute-value">&#8220;match_parent&#8221;</span> <span class="tag">></span> - - <span class="tag"><</span><span class="tag-name">LinearLayout</span> - <span class="attribute">android:id</span>=<span class="attribute-value">&#8220;@+id/view_content&#8221;</span> - <span class="attribute">android:layout_width</span>=<span class="attribute-value">&#8220;match_parent&#8221;</span> - <span class="attribute">android:layout_height</span>=<span class="attribute-value">&#8220;match_parent&#8221;</span> - <span class="attribute">android:orientation</span>=<span class="attribute-value">&#8220;horizontal&#8221;</span> <span class="tag">></span> - <span class="tag"></</span><span class="tag-name">LinearLayout</span><span class="tag">></span> - - <span class="tag"><</span><span class="tag-name">RelativeLayout</span> - <span class="attribute">android:id</span>=<span class="attribute-value">&#8220;@+id/holder&#8221;</span> - <span class="attribute">android:layout_width</span>=<span class="attribute-value">&#8220;120dp&#8221;</span> - <span class="attribute">android:layout_height</span>=<span class="attribute-value">&#8220;match_parent&#8221;</span> - <span class="attribute">android:clickable</span>=<span class="attribute-value">&#8220;true&#8221;</span> - <span class="attribute">android:background</span>=<span class="attribute-value">&#8220;@drawable/holder_bg&#8221;</span><span class="tag">></span> - - <span class="tag"><</span><span class="tag-name">TextView</span> - <span class="attribute">android:id</span>=<span class="attribute-value">&#8220;@+id/delete&#8221;</span> - <span class="attribute">android:layout_width</span>=<span class="attribute-value">&#8220;wrap_content&#8221;</span> - <span class="attribute">android:layout_height</span>=<span class="attribute-value">&#8220;wrap_content&#8221;</span> - <span class="attribute">android:drawableLeft</span>=<span class="attribute-value">&#8220;@drawable/del_icon_normal&#8221;</span> - <span class="attribute">android:layout_centerInParent</span>=<span class="attribute-value">&#8220;true&#8221;</span> - <span class="attribute">android:gravity</span>=<span class="attribute-value">&#8220;center&#8221;</span> - <span class="attribute">android:textColor</span>=<span class="attribute-value">&#8220;@color/floralwhite&#8221;</span> - <span class="attribute">android:text</span>=<span class="attribute-value">&#8220;删除&#8221;</span> <span class="tag">/></span> - <span class="tag"></</span><span class="tag-name">RelativeLayout</span><span class="tag">></span> - - <span class="tag"></</span><span class="tag-name">merge</span><span class="tag">></span> 上述xml文件中,所有的view都会被放在view_content中,而holder是放置诸如删除按钮之类的东西,我们的SlideView会加载这个布局。 ...

2015年4月22日 · 8 分钟 · 天边的星星

Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

转载:http://blog.csdn.net/xiaanming/article/details/18730223 写这篇文章之前,先简单说几句,首先是先恭喜下自己获得了2013年的博客之星称号,很意外也很开心,自己是从2013年开始写博客,那时候也不知道怎么写,我从小就不喜欢写日记,作文什么的,所以刚开始都是贴代码,也没有人看,后面慢慢的,写的文章被推荐博客首页和CSDN首页(这里也要小小的感谢下小编MM),访问量逐渐的多了起来,有更多的人看我的文章,这也使自己有了继续写文章的动力,也希望我写的东西对大家有点帮助吧,在2014年我会继续在CSDN上面写博客,然后是感谢博客之星给我投票支持我的朋友们,谢谢你们支持我的每一票,最后就是2014春节马上就到了,提前祝福大家新年快乐,工作顺利,事事顺心! 回到主题,之前群里面有朋友问我,有没有关于本地图片选择的Demo,类似微信的效果,他说网上没有这方面的Demo,问我能不能写一篇关于这个效果的Demo,于是我研究了下微信的本地图片选择的Demo,自己仿照的写了下分享给大家,希望对以后有这样子需求的朋友有一点帮助吧,主要使用的是ContentProvider扫描手机中的图片,并用GridView将图片显示出来,关于GridView和ListView显示图片的问题,一直是一个很头疼的问题,因为我们手机的内存有限,手机给每个应用程序分配的内存也有限,所以图片多的情况下很容易伴随着OOM的发生,不过现在也有很多的开源的图片显示框架,对显示很多图片进行了优化,大家有兴趣的可以去了解了解,今天我的这篇文章使用的是LruCache这个类(之前写了一篇使用LruCache加载网络图片的Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅)以及对图片进行相对应的裁剪,这样也可以尽量的避免OOM的发生,我们先看下微信的效果吧 接下来我们就来实现这些效果吧,首先我们新建一个项目,取名ImageScan 首先我们先看第一个界面吧,使用将手机中的图片扫描出来,然后根据图片的所在的文件夹将其分类出来,并显示所在文件夹里面的一张图片和文件夹中图片个数,我们根据界面元素(文件夹名, 文件夹图片个数,文件夹中的一张图片)使用一个实体对象ImageBean来封装这三个属性 **[java]** [view plain](http://blog.csdn.net/xiaanming/article/details/18730223#)[copy](http://blog.csdn.net/xiaanming/article/details/18730223#)[![在CODE上查看代码片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/169891)[![派生到我的代码片](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/169891/fork) <div> <embed id="ZeroClipboardMovie_1" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" type="application/x-shockwave-flash" width="18" height="18" align="middle" name="ZeroClipboardMovie_1"> </embed> </div> </div> - <span class="keyword">package</span> com.example.imagescan; - - <span class="comment">/**</span> - <span class="comment"> * GridView的每个item的数据对象</span> - <span class="comment"> * </span> - <span class="comment"> * @author len</span> - <span class="comment"> *</span> - <span class="comment"> */</span> - <span class="keyword">public</span> <span class="keyword">class</span> ImageBean{ - <span class="comment">/**</span> - <span class="comment"> * 文件夹的第一张图片路径</span> - <span class="comment"> */</span> - <span class="keyword">private</span> String topImagePath; - <span class="comment">/**</span> - <span class="comment"> * 文件夹名</span> - <span class="comment"> */</span> - <span class="keyword">private</span> String folderName; - <span class="comment">/**</span> - <span class="comment"> * 文件夹中的图片数</span> - <span class="comment"> */</span> - <span class="keyword">private</span> <span class="keyword">int</span> imageCounts; - - <span class="keyword">public</span> String getTopImagePath() { - <span class="keyword">return</span> topImagePath; - } - <span class="keyword">public</span> <span class="keyword">void</span> setTopImagePath(String topImagePath) { - <span class="keyword">this</span>.topImagePath = topImagePath; - } - <span class="keyword">public</span> String getFolderName() { - <span class="keyword">return</span> folderName; - } - <span class="keyword">public</span> <span class="keyword">void</span> setFolderName(String folderName) { - <span class="keyword">this</span>.folderName = folderName; - } - <span class="keyword">public</span> <span class="keyword">int</span> getImageCounts() { - <span class="keyword">return</span> imageCounts; - } - <span class="keyword">public</span> <span class="keyword">void</span> setImageCounts(<span class="keyword">int</span> imageCounts) { - <span class="keyword">this</span>.imageCounts = imageCounts; - } - - } 接下来就是主界面的布局啦,上面的导航栏我没有加进去,只有下面的GridView,所以说主界面布局中只有一个GridView ...

2015年3月7日 · 17 分钟 · 天边的星星

微信公众平台开发(71)OAuth2.0网页授权

微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息 作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章。 一、什么是OAuth2.0 官方网站:http://oauth.net/ http://oauth.net/2/ 权威定义:OAuth is An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications. OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站、移动或桌面应用上存储的私密的资源(如用户个人信息、照片、视频、联系人列表),而无需将用户名和密码提供给第三方应用。 OAuth 2.0是OAuth协议的下一版本,但不向后兼容OAuth 1.0。 OAuth 2.0关注客户端开发者的简易性,同时为Web应用,桌面应用和手机,和起居室设备提供专门的认证流程。 OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的访问许可或他们数据的所有内容。 新浪微博API目前也使用OAuth 2.0。 原文:http://www.cnblogs.com/txw1958/p/weixin71-oauth20.html 二、微信公众平台OAuth2.0授权 微信公众平台OAuth2.0授权详细步骤如下: 用户关注微信公众账号。 微信公众账号提供用户请求授权页面URL。 用户点击授权页面URL,将向服务器发起请求 服务器询问用户是否同意授权给微信公众账号(scope为snsapi_base时无此步骤) 用户同意(scope为snsapi_base时无此步骤) 服务器将CODE通过回调传给微信公众账号 微信公众账号获得CODE 微信公众账号通过CODE向服务器请求Access Token 服务器返回Access Token和OpenID给微信公众账号 微信公众账号通过Access Token向服务器请求用户信息(scope为snsapi_base时无此步骤) 服务器将用户信息回送给微信公众账号(scope为snsapi_base时无此步骤) 使用的AppId和AppSecret在开发者中心-开发者ID中,可以找到。 1. 配置授权回调页面域名 进入微信公众平台后台后,依次进入开发者中心-权限表,找到网页授权获取用户基本信息, 点击右侧的修改。原文:http://www.cnblogs.com/txw1958/p/weixin71-oauth20.html 授权回调域名配置规范为全域名并且不带http,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com无法进行OAuth2.0鉴权。 这里我们填写方倍工作室的一个百度应用二级域名为 mascot.duapp.com ...

2015年1月22日 · 2 分钟 · 天边的星星

微信开发值得推荐的开源项目

微信开发值得推荐的开源项目 http://www.csdn.net/article/2014-04-16/2819340 微信公众平台开发(java)用什么框架最好呢? http://www.oschina.net/question/1462914_162471 weixin 1 0 微信开发框架 JAVA版 http://download.csdn.net/detail/april127/7675879 微信公众平台技术方案- http://wenku.baidu.com/link?url=3JxSgzmrWFZdXAHJ9jf1bqhdO-FyGbhWYWIy7N_fBmqkMJ9MOvEe-sPXL76eeWNDV8w7PJpl21o4GQH6-M8FN8SEPuuhyY8GiWzvxTacObu http://www.eoeandroid.com/thread-317474-1-1.html http://tieba.baidu.com/p/3237760264 微信公众帐号: 【凡尘工作室】的开源代码 https://github.com/ostrichmyself/bae_weichat

2014年12月29日 · 1 分钟 · 天边的星星

微信开发值得推荐的开源项目

Wechat-PHP-SDK 微信公众平台 PHP 开发包,细化各项接口操作,支持链式调用。 Github托管地址:dodgepudding/wechat-php-sdk 微信公众平台 PHP SDK 简单的微信公众平台 PHP SDK ,通过调用相应的接口,使你可以轻松地开发微信 App 。 Github托管地址:netputer/wechat-php-sdk Wechat-php 本微信SDK实现了被动响应的官方 API 已经主动发送消息给订阅用户,主动批量发送消息给订阅用户。 Github托管地址:ligboy/Wechat-php 非常强大的微信公众平台开发框架推荐中有官方和第三方开发者提供的丰富的插件,是免费并且成熟的框架,更多的信息可以点击这里: 微擎:http://www.we7.cc/ 微笑:http://www.sylai.com/ weiphp:http://www.weiphp.cn/

2014年8月29日 · 1 分钟 · 天边的星星

微信开发之移动手机WEB页面(HTML5)Javascript实现一键拨号及短信发送功能

在做一个微信的微网站中的一个便民服务电话功能的应用,用到移动web页面中列出的电话号码,点击需要实现调用通讯录,网页一键拨号的拨打电话功能。 如果需要在移动浏览器中实现拨打电话,发送email,美国服务器,调用sns等功能,移动手机WEB页面(HTML5)Javascript提供的接口是一个好办法。 采用url链接的方式,实现在Safari ios,香港服务器,Android 浏览器,webos 浏览器,塞班浏览器,IE,Operamini等主流浏览器,进行拨打电话功能。 1.最常用WEB页面JS实现一键拨号的电话拨打功能: 移动WEB页面JS一键拨打号码咨询功能 在拨号界面,显示号码,并提示拨打。 支持大部分的浏览器,但是在QQ浏览器上支持不好。 微信现在出现屏蔽常规拨号功能,具体解决办法见《微信开发实现一键拨号出现屏蔽问题的解决方案》 2.最常用WEB页面JS实现一键发送短信功能: 移动WEB页面JS一键发送短信咨询功能 在信息录入界面,显示发送号码,并提示录入信息。 支持大部分的浏览器,但是在QQ浏览器上支持不好。 3、移动web页面自动探测电话号码 如果要支持safari for ios ,blackberry browser的号码,需要加上一下标签: 4.使用wtai协议进行拨打电话。 在wml中可以调用设备的wtai函数来呼叫特定的电话号码。目前,越来越多的浏览器都支持这个功能,但还不是所有。 代码如下所示: 实例: 拨打10086 将10086存储至电话簿 建议采用这个方式。 5、不太灵验的方式: 移动WEB页面JS一键拨打号码咨询功能 经过测试,大部分浏览器都不支持了。 补充—————————– 这段时间很多人看了我的帖子《微信开发之移动手机WEB页面(HTML5)Javascript实现一键拨号及短信发送功能 》询问我在微信中出现无法拨号的情况,原先我操作的时候,的确是OK的,现在微信版本升级了,我试了一下,果然拨号不行了,在首页的web页面中是没有问题的,但是在微信中就是拨打不了,找了很多,后来发现是微信做了屏蔽,解决方法如下: 1、拨号的代码还是不变,和我原先的文章一样, 2、打开拨号页面要做下处理,在网址后面增加一个锚节点mp.weixin.qq.com。 实例如下: 如:http://www.xxxxxx/xxxx.html 上需要拨号代码,操作如下 1、 继续写拨号代码 移动WEB页面JS一键拨打号码咨询功能 2、打开这个网址链接的时候,就用这个链接http://www.xxxxxx/xxxx.html #mp.weixin.qq.com(多添加一个mp.weixin.qq.com) 这样,微信里面的一键拨号功能就OK了

2014年8月6日 · 1 分钟 · 天边的星星