本文主要记录海外应用第三方登录: facebook(登录/分享), twitter(登录/分享), google(登录), line(登录/分享),instagram(分享),属于记录流水账型的啦,谨希望后人少踩坑 当然这个需要科学上网,如何上网就不属于本文的讨论范围啦,如果你说点击不开官方教程,可以点击这个,输入框输入网址,就可以打开我能帮的只有这些了
twitter-登录
twitter 资源引入,官方教程 就是引入一个module,然后初始化twitter
上一步需要注册一个twitter开发者账号(先创建一个twitter账号,然后转为开发者账号),然后新建一个项目,新建项目的地址 新建项目很简单,但是项目需要配置一下,我测试时一直是com.twitter.sdk.android.core.twitterexception: request failure 就是手贱了一下,没有配置好,勾选了enable callback locking 附上正确的配置的截图
开始登录,官方教程 按照官方的登录教程来,处理好上面的坑,就可以了
登录成功就可以在回调里拿到登录成功用户的部分信息 mtwitterloginbutton.setcallback(new callback
@override
public void success(result
string name = result.data.getusername();
long userid = result.data.getuserid();
long id = result.data.getid();
twitterauthtoken token = result.data.getauthtoken();
string secret = token.secret;
string strtoken = token.token;
d.i("slack", "success name: " name " ,userid: " userid " ,id: " id " ,secret: " secret " ,token: " strtoken);
// 如果需要获取用户的详细信息,可以使用api :get users/show
}
@override
public void failure(twitterexception exception) {
exception.printstacktrace();
d.i("slack", "failure:" exception.getmessage());
}
});
但是这里不能获取用户的详细信息,比如用户的头像,翻阅api,发现一个请求get users/show 这里可以只要传上一步获取到的参数,就可以获取用户信息啦
twitter-分享
分享还是必不可少的 官方文档
推特目测可以分享纯文字,图片,视频链接,提供两种分享方式
tweetcomposer.builder
安装了客户端,直接打开客户端
没有安装客户端,打开系统浏览器
composeractivity.builder().createintent(); 不依赖于是否安装了客户端,在应用打开一个新分享界面
推特的分享结果是已广播的形式回调的 twitter 登录(testloginclick() 是不使用提供的按钮实现的登录)和分享部分代码 /**
* created by slack
* on 17/9/26 上午11:33
* 8797威尼斯老品牌官网上 登录示例 : dev.twitter /twitterkit/android/log-in-with-twitter
* 查询用户的详细信息: developer.twitter /en/docs/accounts-and-users/follow-search-get-users/api-reference/get-users-show
* 分享: dev.twitter /twitterkit/android/compose-tweets
*/
public class twitterloginactivity extends baseoldactivity {
public void registertwitter(context context) {
twitterconfig config = new twitterconfig.builder(context)
.logger(new defaultlogger(log.debug))
.twitterauthconfig(new twitterauthconfig("ectbyyucdgulddupbk9h80qvu", "cslq80nlkmbvoqizei2ns8puhuqjhabsvxnsmubijkalohvihj"))
.debug(true)
.build();
twitter.initialize(config);
}
twitterloginbutton mtwitterloginbutton;
@override
protected void oncreate(bundle savedinstancestate) {
registertwitter(this);
this.requestwindowfeature(window.feature_no_title);
this.getwindow().setflags(
windowmanager.layoutparams.flag_fullscreen,
windowmanager.layoutparams.flag_fullscreen);
super.oncreate(savedinstancestate);
setcontentview(r.layout.acitvity_third_twitter_login);
mtwitterloginbutton = (twitterloginbutton) findviewbyid(r.id.test_login_twitter);
mtwitterloginbutton.setcallback(mtwittercallback);
}
private callback
@override
public void success(result
string name = result.data.getusername();
long userid = result.data.getuserid();
long id = result.data.getid();
twitterauthtoken token = result.data.getauthtoken();
string secret = token.secret;
string strtoken = token.token;
d.i("slack", "success name: " name " ,userid: " userid " ,id: " id " ,secret: " secret " ,token: " strtoken);
// 如果需要获取用户的详细信息,可以使用api :get users/show
}
@override
public void failure(twitterexception exception) {
exception.printstacktrace();
d.i("slack", "failure:" exception.getmessage());
}
};
@override
protected void onactivityresult(int requestcode, int resultcode, intent data) {
super.onactivityresult(requestcode, resultcode, data);
mtwitterloginbutton.onactivityresult(requestcode, resultcode, data);
if (mtwitterauthclient != null && (requestcode == mtwitterauthclient.getrequestcode())) {
mtwitterauthclient.onactivityresult(requestcode, resultcode, data);
}
}
/**
* share ,没有客户端,打开的是系统的浏览器,用户的登录session ,暂时无法传
* 不知道是不是没有客户端的缘故,无法发图片
* 图片uri : the image uri should be a uri using the content:// scheme.
*/
public void testshareclick(view view) {
url url;
try {
url = new ;
} catch (malformedurlexception e) {
e.printstacktrace();
url = null;
}
uri uri = obtainuri();
tweetcomposer.builder builder = new tweetcomposer.builder(this)
.text("this is a test");
if (uri != null) {
builder.image(uri);
}
if (url != null) {
builder.;
}
builder.show();
}
public void testshareclick2(view view) {
uri uri = obtainuri();
twittersession session = twittercore.getinstance().getsessionmanager()
.getactivesession();
composeractivity.builder builder = new composeractivity.builder(this)
.session(session)
.text("love where you work")
.hashtags("#twitter");
if(uri != null) {
builder.image(uri);
}
intent intent = builder.createintent();
startactivity(intent);
}
private uri obtainuri() {
string filepath = new file(environment.getexternalstoragedirectory(), "test.jpg").getabsolutepath();
uri muri = uri.parse("content://media/external/images/media");
uri imageuri = null;
cursor cursor = managedquery(mediastore.images.media.external_content_uri, null, null,
null, mediastore.images.media.default_sort_order);
cursor.movetofirst();
while (!cursor.isafterlast()) {
string data = cursor.getstring(cursor
.getcolumnindex(mediastore.mediacolumns.data));
if (filepath.equals(data)) {
int ringtoneid = cursor.getint(cursor
.getcolumnindex(mediastore.mediacolumns._id));
imageuri = uri.withappendedpath(muri, ""
ringtoneid);
break;
}
cursor.movetonext();
}
return imageuri;
}
public void testsessionclick(view view) {
twittersession session = twittercore.getinstance().getsessionmanager().getactivesession();
string name = session.getusername();
ins无法在安卓搜索到,已经被下架,国内已经屏蔽了ins的海外服务器连接,ins是海外公司运营,2012年4月10号,facebook宣布以10亿美元收购instagram。所以说,ins是国外的软件,并没有在国内搭建服务器供国内使用。所以会显示无法完成你的请求的网络异常,但以前的v*n通信技术因为现在的新规定,服务器都已经关闭或者ip被屏蔽,并且运营商大批量检测都已经切断了连接,不能再使用了,目前可以连接到国际网络的也只有2bss等这些。
?
ins无法在安卓搜索到,已经被下架,并且安卓下载ins需要连接到国际网络,才能连接到ins的服务器,都是这样才能完成申请账户和日常浏览。 目前国内已经屏蔽了ins的海外服务器连接,ins是海外公司运营,2012年4月10号,facebook宣布以10亿美元收购instagram。 所以说,ins是国外的软件,并没有在国内搭建服务器供国内使用。 所以会显示无法完成你的请求的网络异常,但以前的v*n通信技术因为现在的新规定,服务器都已经关闭或者ip被屏蔽,并且运营商大批量检测都已经切断了连接,不能再使用了,目前可以连接到国际网络的也只有2bss等这些。 据techinasia网站报道,facebook旗下图片分享应用instagram从中国主流安卓应用商店中神秘消失。 百度、小米、奇虎360、腾讯、91无线五大安卓应用平台已经没有了instagram的踪影,该应用最初何时被下架未知。 不过,instagram消失的现象仅局限于安卓平台。苹果中国应用商店还可以搜索到instagram。另外,一名此前下载了安卓版instagram的用户透露,这款应用还可以照常运行。 ins背景: instagram(照片墙)简称ins是一款运行在移动端上的社交应用,以一种快速、美妙和有趣的方式将你随时抓拍下的图片彼此分享。 2012年4月10号,facebook宣布以10亿美元收购instagram。2012年10月25号,facebook以总值7.15亿美元收购instagram。2012年12月,facebook旗下的图片共享服务instagram因其使用图片共享服务的新条款而在互联网上引起轩然大波,instagram对此进行了澄清,称不会在广告中使用或销售用户的照片,从而打消了用户的顾虑。北京时间2013年10月22日,诺基亚宣布instagram将会入驻windows phone市场,11月21日instagram正式登录windows phone 8平台。 2015年12月10日,苹果公司发布了2015年“app store最佳应用”名单,instagram获得“最佳iphone6s应用”。
iepl和mstp每扩容一个点,都需要专用终端设备投入,iepl专线和mstp,每扩容一个点,都需要新增点至其它所有要进行连接的点之间增加的多条pvc电路投入。 2016年12月13日,instagram的live直播功能向全美所有用户正式开放。 2018年2月,世界品牌实验室发布《2018世界品牌500强》榜单,instagram排名第362。
前言
最近给app加入三方登录,由于比较多,所以就用的友盟统一登录,会比一个一个配置方便点
正文
先说qq,微信,微博:
国内qq,微信,微博三方登录其实还行,并没有太多坑,文档也挺完善的.
但是需要注意的就是你后台配置的签名和当前的签名是否一致,然后appid和appkey是否配置正确(比如粘贴的时候多粘了一个空格)
twitter,facebook,instagram:
由于之前没有弄过twitter,facebook,instagram的三方登录,所以配置过程一波三折
首先网络畅通(最起码测试机要畅通)
然后一般app后台配置没上线时都要求用测试账号(比如申请三方后台所用的账号)
twitter:
配置完成后,需要调用
umshareapi.get(this).dooauthverify();
而下面的这个api无法使用....
umshareapi.get(this).getplatforminfo();
授权数据获取(需要accesstoken和tokensecret,但现在友盟不会直接给你)
openid 的key为:?user_id
获取accesstoken和tokensecret,如下代码(debug了半个小时才找到..)
@override
protected void onactivityresult(int requestcode, int resultcode, intent data) {
super.onactivityresult(requestcode, resultcode, data);
if (third_party_type == ids.thirdplat_twitter) {//如果是twitter
//extra_token=tk
//extra_token_secret=ts
extra_token = data.getstringextra("tk");
extra_token_secret = data.getstringextra("ts");
}
umshareapi.get(this).onactivityresult(requestcode, resultcode, data);
}
获取授权成功后要及时的移除授权,否则下一次调用授权会失败
umshareapi.get(firstloginactivity.this).deleteoauth();
facebook:
facebook还好,只需要注意测试用注册后台app的账号登录
然后?openid 的key为:?uid? ?accesstoken 的key为 access_token
instagram:(最6的登录)
这是我见过最6最有自己思想的登录 \手动滑稽? (没法在友盟上获取,得自己写)
首先先使用webview加载一段网址:
api.instagram /oauth/authorize/?client_id=你的appid&redirect_uri=你的回调地址&response_type=token
ps:回调地址我觉得可以随便传
然后获取重定向后的地址,伪代码:
webview.setwebviewclient(new webviewclient() {
@override
public boolean shouldoverrideurlloading(webview view, webresourcerequest request) {
uri url1 = request.get;
if (url1 == null)
return false;
string url = url1.tostring();
//他会给你重定向为 你的回调地址/#access_token=xxxxxxxxxxxxxxxx 重定向后的链接
if (url != null && url.indexof("你的回调地址/#access_token=") == 0) {
string accesstoken = url.replace("你的回调地址/#access_token=", "");//这样就获取到了你的access_token
}
return false;
}
});
然后就获取到了access_token
instagram三方登录参考: blog.csdn /qq_38402659/article/details/89705419
还没有评论,来说两句吧...