zoukankan      html  css  js  c++  java
  • 第三方登录,授权,分享

    </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包,   填写好包名和类名,会生成对应的文件,将其复制到自己的工程中即可.</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等客户端登录必须设置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等客户端登录必须设置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
    	}
    
    }
    


  • 相关阅读:
    高级软件工程第八次作业LLS战队团队作业五
    Alpha阶段个人总结
    高级软件工程第七次作业:LLS战队Alpha敏捷冲刺7
    高级软件工程第七次作业:LLS战队Alpha敏捷冲刺6
    数独游戏界面功能
    数独棋盘
    调研《构建之法》指导下的全国高校的历届软工实践作品、全国互联网+竞赛、物联网竞赛、华为杯研究生作品赛、全国大学生服务外包赛等各类全国性大学生信息化相关的竞赛平台的历届作品
    高级软件工程课程的实践项目的自我目标
    Beta冲刺汇总博客
    团队作业9——第二次项目冲刺2(Beta阶段)
  • 原文地址:https://www.cnblogs.com/merbn/p/4570609.html
Copyright © 2011-2022 走看看