使用
来源:互联网 发布:淘宝评语怎么改好评 编辑:程序博客网 时间:2024/04/29 08:31
在开发过程中,必不可少的要进行第三方登录,这里只是做一个简单的用QQ实现第三方登录, 在做第三方登录的时候我们需要用到友盟,在友盟官网的产品栏目中有一个U_Share..点击它会出现 "立即使用" 和"SDK及文档"两个按钮, 如果是第一次使用需要下载SDK文档,此时需要点击"SDK及文档"这个按钮,选中安卓进行下载.
下载完之后根据"SDK及文档"里的"UShare集成文档"里的步骤进行集成,:
集成需要导入四个lib包和一个debug_keystore文件.
如下是集成之后项目下的的build.gradle:
apply plugin: 'com.android.application'android { compileSdkVersion 25 buildToolsVersion "26.0.0" defaultConfig { applicationId "com.example.guan.project1_day2_qqlogin" minSdkVersion 15 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false signingConfig signingConfigs.debug proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { minifyEnabled false signingConfig signingConfigs.debug proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } signingConfigs { debug { storeFile file('debug.keystore') storePassword "android" keyAlias "androiddebugkey" keyPassword "android" } }}dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.3.1' testCompile 'junit:junit:4.12' compile files('libs/open_sdk_r5788_lite.jar') compile 'com.github.bumptech.glide:glide:4.0.0-RC1'}
apply plugin: 'com.android.application'
android {
compileSdkVersion 25 buildToolsVersion "26.0.0" defaultConfig { applicationId "com.example.guan.project1_day2_qqlogin" minSdkVersion 15 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false signingConfig signingConfigs.debug proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { minifyEnabled false signingConfig signingConfigs.debug proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } signingConfigs { debug { storeFile file('debug.keystore') storePassword "android" keyAlias "androiddebugkey" keyPassword "android" } }}dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.3.1' testCompile 'junit:junit:4.12' compile files('libs/open_sdk_r5788_lite.jar') compile 'com.github.bumptech.glide:glide:4.0.0-RC1'}
集成之后app下的build.gradle文件:
apply plugin: 'com.android.application'android { compileSdkVersion 25 buildToolsVersion "26.0.0" defaultConfig { applicationId "com.example.guan.project1_day2_qqlogin" minSdkVersion 15 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false signingConfig signingConfigs.debug proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { minifyEnabled false signingConfig signingConfigs.debug proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } signingConfigs { debug { storeFile file('debug.keystore') storePassword "android" keyAlias "androiddebugkey" keyPassword "android" } }}dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.3.1' testCompile 'junit:junit:4.12' compile files('libs/open_sdk_r5788_lite.jar') compile 'com.github.bumptech.glide:glide:4.0.0-RC1'}
集成之后的清单列表:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.guan.project1_day2_qqlogin"> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <application android:name=".App" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tencent100424468" /> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="orientation|keyboardHidden|screenSize"/> <meta-data android:name="UMENG_APPKEY" android:value="561cae6ae0f55abd990035bf" > </meta-data> </application></manifest>
集成之后的app:
apply plugin: 'com.android.application'android { compileSdkVersion 25 buildToolsVersion "26.0.0" defaultConfig { applicationId "com.example.guan.project1_day2_qqlogin" minSdkVersion 15 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false signingConfig signingConfigs.debug proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { minifyEnabled false signingConfig signingConfigs.debug proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } signingConfigs { debug { storeFile file('debug.keystore') storePassword "android" keyAlias "androiddebugkey" keyPassword "android" } }}dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.3.1' testCompile 'junit:junit:4.12' compile files('libs/open_sdk_r5788_lite.jar') compile 'com.github.bumptech.glide:glide:4.0.0-RC1'}
集成需要导入的四个lib包,和添加一个debug_keystore文件
然后在"SDK及文档"里的"第三方登录集成"步骤,在代码里实现.
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button mQQlogin; private ImageView mQQimage; private UMShareAPI umShareAPI; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { mQQlogin = (Button) findViewById(R.id.QQlogin); mQQimage= (ImageView) findViewById(R.id.QQimage); mQQlogin.setOnClickListener(this); App app = (App) getApplication(); umShareAPI = app.getmUMShareAPI(); } @Override public void onClick(View v) { //获取用户信息 if (umShareAPI.isInstall(this, SHARE_MEDIA.QQ)) { umShareAPI.getPlatformInfo(this, SHARE_MEDIA.QQ, new UMAuthListener() { @Override public void onStart(SHARE_MEDIA share_media) { } @Override public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) { if (share_media == SHARE_MEDIA.QQ){ if (i==0){ Log.e("onComplete","onComplete :登录成功"); }else if (i==2){ Log.e("onComplete","onComplete :获取用户信息录成功"); String name=map.get("name"); String imageurl=map.get("iconurl"); mQQlogin.setText(name); Glide.with(MainActivity.this).load(imageurl).into(mQQimage); } } } @Override public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) { } @Override public void onCancel(SHARE_MEDIA share_media, int i) { } }); } else { Toast.makeText(MainActivity.this, "没有安装QQ", Toast.LENGTH_SHORT).show(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); umShareAPI.onActivityResult(requestCode, resultCode, data); }}
一些代码进行了优化,其中第三方登录授权以后会得到QQ昵称和头像显示在界面,布局如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.guan.project1_day2_qqlogin.MainActivity"> <Button android:id="@+id/QQlogin" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="QQ登录" /> <ImageView android:id="@+id/QQimage" android:layout_width="200dp" android:layout_height="200dp" android:layout_gravity="center_horizontal" /></LinearLayout>
阅读全文
0 0
- 使用
- 使用
- 使用
- 使用
- 使用
- 使用
- 使用++,--
- 使用$@ $!
- 使用
- SoftICE使用(指令使用)
- 使用GraphEdit使用
- 使用HtmlParser使用心得
- 时钟使用使用
- Ubuntu 使用Git 使用
- Ubuntu 使用Git 使用
- GUID使用的使用
- Git使用 tortoisegit使用
- Ubuntu 使用Git 使用
- H5 Spin.js 网络请求菊花控件
- C语言程序windows运行
- 八大排序算法
- jmeter 元件的作用域与执行顺序
- 换一种思路实现Java里String类的contains方法
- 使用
- hiho 1246 && hdu 6075(17多校四09) 同余 与 最大公约数
- 思维导图解析——《红楼梦》人物关系
- 如何查询和修改Linux操作系统生成core dump文件的默认路径
- [Java基础] 深入jar包:从jar包中读取资源文件
- 定义jsp页面默认编码格式
- 依赖注入问题解决:No bean is eligible for injection to the injection point [JSR-299 §5.2.1]
- Codeforces Round #373 (Div. 2) B.Anatoly and Cockroaches
- Codeforces Round #368 (Div. 2) problem: (C) Pythagorean Triples