第三方登录,授权,分享
Posted mfmdaoyou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三方登录,授权,分享相关的知识,希望对你有一定的参考价值。
</pre><pre name="code" class="java">
</pre><pre name="code" class="java">
</pre><pre name="code" class="java">
</pre><pre name="code" class="java">
<p>首先须要到官网下载集成SDK, shareSDK, 打开jar包, 填写好包名和类名,会生成相应的文件,将其拷贝到自己的project中就可以.</p><p><span style="color:#ff0000;"> </span></p><p><span style="color:#ff0000;">然后须要在androidManifest.xml中加入权限.</span></p><pre name="code" class="java">
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test.gao_sharesdk" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" /> <span style="color:#ff6666;"><uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/> <uses-permission android:name="android.permission.GET_ACCOUNTS"/></span> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.test.gao_sharesdk.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <span style="color:#cc66cc;"> <activity android:name="com.mob.tools.MobUIShell" android:configChanges="keyboardHidden|orientation|screenSize" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:windowSoftInputMode="stateHidden|adjustResize" > <intent-filter> <data android:scheme="tencent100371282" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /></span> </intent-filter> <span style="background-color: rgb(153, 255, 255);"><!-- Adapter表示一个继承自cn.sharesdk.framework.authorize.AuthorizeAdapter的类, 这个类能够监听到页面的生命周期,也能够获取授权页面的各种UI控件。 开发人员能够通过继承AuthorizeAdapter,重写其方法,并获取各种UI来自己定义这个页面的行为。 --></span> <span style="color:#ff6666;"> <meta-data android:name="AuthorizeAdapter" android:value="com.test.gao_sharesdk.MyAdapter"/></span> </activity> </application> </manifest>
</pre><span style="background-color:rgb(255,255,51)">_____________这是调皮的分界线_____________________________________________________________________________________________________________________________</span><p><pre name="code" class="java">package com.example.sharesdkdemo01; import java.util.HashMap; import cn.sharesdk.framework.Platform; import cn.sharesdk.framework.PlatformActionListener; import cn.sharesdk.framework.ShareSDK; import cn.sharesdk.onekeyshare.OnekeyShare; import cn.sharesdk.tencent.qq.QQ; import cn.sharesdk.tencent.weibo.TencentWeibo; import cn.smssdk.EventHandler; import cn.smssdk.SMSSDK; import cn.smssdk.gui.RegisterPage; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.Menu; public class MainActivity extends Activity { private static final String APPKEY = "800ccd4a92bc"; private static final String APPSECRET = "09621165ebd2cfd00c3019606249acb0"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 做初始化 ShareSDK.initSDK(getApplicationContext()); SMSSDK.initSDK(getApplicationContext(), APPKEY, APPSECRET); RegisterPage page = new RegisterPage(); page.setRegisterCallback(new EventHandler() { public void afterEvent(int event, int result, Object data) { // 解析注冊结果 if (result == SMSSDK.RESULT_COMPLETE) { @SuppressWarnings("unchecked") HashMap<String, Object> phoneMap = (HashMap<String, Object>) data; String country = (String) phoneMap.get("country"); String phone = (String) phoneMap.get("phone"); // 提交用户信息 //registerUser(country, phone); } } }); page.show(getApplicationContext()); // login(TencentWeibo.NAME); //share(TencentWeibo.NAME); } public void share(String plateformName) { OnekeyShare oks = new OnekeyShare(); //true隐藏编辑页面,false显示编辑页面 oks.setSilent(true); // 关闭sso授权 oks.disableSSOWhenAuthorize(); //oks.setPlatform(plateformName); // 分享时Notification的图标和文字 2.5.9以后的版本号不调用此方法 // oks.setNotification(R.drawable.ic_launcher, // getString(R.string.app_name)); // title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用 oks.setTitle(getString(R.string.share)); // titleUrl是标题的网络链接。仅在人人网和QQ空间使用 oks.setTitleUrl("http://sharesdk.cn"); // text是分享文本,全部平台都须要这个字段(字数限制,尽量话语简洁) oks.setText("我是分享文本"); // imagePath是图片的本地路径。Linked-In以外的平台都支持此參数(假设本地没有这张图片,分享直接中断。至提示分享失败。查不出错误) //oks.setImagePath("/sdcard/test.jpg");// 确保SDcard以下存在此张图片 // ImageUrl是图片的网络路径,新浪微博,人人,QQ空间使用(但QQ因权限问题有时候分享不成功) // oks.setImageUrl("==========="); // url仅在微信(包含好友和朋友圈)中使用 oks.setUrl("http://sharesdk.cn"); // comment是我对这条分享的评论,仅在人人网和QQ空间使用 oks.setComment("我是測试评论文本"); // site是分享此内容的站点名称。仅在QQ空间使用 oks.setSite(getString(R.string.app_name)); // siteUrl是分享此内容的站点地址。仅在QQ空间使用 oks.setSiteUrl("http://sharesdk.cn"); // 分享的地区的经纬度(可依据定位获取,实时更新所在地区) // oks.setLatitude(latitude); // oks.setLongitude(longitude); // 启动分享GUI oks.show(this); } /** * 指定平台登录 * * @param plateformName * :指定平台的名称 */ public void login(final String plateformName) { // 获取指定平台的Platform实例 Platform p = ShareSDK.getPlatform(getApplicationContext(), plateformName); // true不使用SSO授权。false使用SSO授权(QQ等client登录必须设置SSOSetting的值为false) p.SSOSetting(true); // 调用要数据不要功能的登录方法,获取个人信息參数传入值为null p.showUser(null); // 设置登录行为的监听(成功,失败,取消) p.setPlatformActionListener(new PlatformActionListener() { @Override public void onError(Platform arg0, int arg1, Throwable arg2) { // TODO Auto-generated method stub Log.e("====", "===" + arg2.getMessage()); } @Override public void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2) { // TODO Auto-generated method stub if (plateformName.equals(QQ.NAME)) { } else if (plateformName.equals(TencentWeibo.NAME)) { } Log.e("====", "===" + arg2.toString()); Log.e("====", "===" + arg0.getDb().getUserIcon()); } @Override public void onCancel(Platform arg0, int arg1) { // TODO Auto-generated method stub } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
package com.example.sharesdkdemo01;
import java.util.HashMap;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.onekeyshare.OnekeyShare;
import cn.sharesdk.tencent.qq.QQ;
import cn.sharesdk.tencent.weibo.TencentWeibo;
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;
import cn.smssdk.gui.RegisterPage;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
private static final String APPKEY = "800ccd4a92bc";
private static final String APPSECRET = "09621165ebd2cfd00c3019606249acb0";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 做初始化
ShareSDK.initSDK(getApplicationContext());
SMSSDK.initSDK(getApplicationContext(), APPKEY, APPSECRET);
RegisterPage page = new RegisterPage();
page.setRegisterCallback(new EventHandler() {
public void afterEvent(int event, int result, Object data) {
// 解析注冊结果
if (result == SMSSDK.RESULT_COMPLETE) {
@SuppressWarnings("unchecked")
HashMap<String, Object> phoneMap = (HashMap<String, Object>) data;
String country = (String) phoneMap.get("country");
String phone = (String) phoneMap.get("phone");
// 提交用户信息
//registerUser(country, phone);
}
}
});
page.show(getApplicationContext());
// login(TencentWeibo.NAME);
//share(TencentWeibo.NAME);
}
public void share(String plateformName) {
OnekeyShare oks = new OnekeyShare();
//true隐藏编辑页面,false显示编辑页面
oks.setSilent(true);
// 关闭sso授权
oks.disableSSOWhenAuthorize();
//oks.setPlatform(plateformName);
// 分享时Notification的图标和文字 2.5.9以后的版本号不调用此方法
// oks.setNotification(R.drawable.ic_launcher,
// getString(R.string.app_name));
// title标题。印象笔记、邮箱、信息、微信、人人网和QQ空间使用
oks.setTitle(getString(R.string.share));
// titleUrl是标题的网络链接。仅在人人网和QQ空间使用
oks.setTitleUrl("http://sharesdk.cn");
// text是分享文本,全部平台都须要这个字段(字数限制,尽量话语简洁)
oks.setText("我是分享文本");
// imagePath是图片的本地路径,Linked-In以外的平台都支持此參数(假设本地没有这张图片,分享直接中断,至提示分享失败,查不出错误)
//oks.setImagePath("/sdcard/test.jpg");// 确保SDcard以下存在此张图片
// ImageUrl是图片的网络路径,新浪微博。人人,QQ空间使用(但QQ因权限问题有时候分享不成功)
// oks.setImageUrl("===========");
// url仅在微信(包含好友和朋友圈)中使用
oks.setUrl("http://sharesdk.cn");
// comment是我对这条分享的评论。仅在人人网和QQ空间使用
oks.setComment("我是測试评论文本");
// site是分享此内容的站点名称,仅在QQ空间使用
oks.setSite(getString(R.string.app_name));
// siteUrl是分享此内容的站点地址,仅在QQ空间使用
oks.setSiteUrl("http://sharesdk.cn");
// 分享的地区的经纬度(可依据定位获取,实时更新所在地区)
// oks.setLatitude(latitude);
// oks.setLongitude(longitude);
// 启动分享GUI
oks.show(this);
}
/**
* 指定平台登录
*
* @param plateformName
* :指定平台的名称
*/
public void login(final String plateformName) {
// 获取指定平台的Platform实例
Platform p = ShareSDK.getPlatform(getApplicationContext(),
plateformName);
// true不使用SSO授权,false使用SSO授权(QQ等client登录必须设置SSOSetting的值为false)
p.SSOSetting(true);
// 调用要数据不要功能的登录方法。获取个人信息參数传入值为null
p.showUser(null);
// 设置登录行为的监听(成功,失败,取消)
p.setPlatformActionListener(new PlatformActionListener() {
@Override
public void onError(Platform arg0, int arg1, Throwable arg2) {
// TODO Auto-generated method stub
Log.e("====", "===" + arg2.getMessage());
}
@Override
public void onComplete(Platform arg0, int arg1,
HashMap<String, Object> arg2) {
// TODO Auto-generated method stub
if (plateformName.equals(QQ.NAME)) {
} else if (plateformName.equals(TencentWeibo.NAME)) {
}
Log.e("====", "===" + arg2.toString());
Log.e("====", "===" + arg0.getDb().getUserIcon());
}
@Override
public void onCancel(Platform arg0, int arg1) {
// TODO Auto-generated method stub
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
以下是Adapter,--------自己定义登录窗体的标题
package com.test.gao_sharesdk; import cn.sharesdk.framework.TitleLayout; import cn.sharesdk.framework.authorize.AuthorizeAdapter; public class MyAdapter extends AuthorizeAdapter { @Override public void onCreate() { super.onCreate(); TitleLayout titleLayout = getTitleLayout(); titleLayout.getTvTitle().setText("哇哈哈");//设置登录窗体的标题 hideShareSDKLogo();//隐藏自带的logo } }
以上是关于第三方登录,授权,分享的主要内容,如果未能解决你的问题,请参考以下文章