详解android在mob平台实现qq登陆和分享

作者:android 小白星 时间:2022-04-03 08:02:26 

个人感觉mob平台功能还是比较强大的,很多功能都可以通过他们平台来实现。

建议仔细观看每一个步骤,如果一个步骤没处理好,可能就会让你的这个功能无法实现。相信我一定可以成功的
废话少说,先看一下效果:

详解android在mob平台实现qq登陆和分享

1.在mob平台配置ShareSDK环境

1.如何在mob平台创建应用

下面为我创建的应用,如图所示,我们选择接入的接口为ShareSDK

详解android在mob平台实现qq登陆和分享

2.获取你的App KeyApp Secret(建议用自己的)

获取你先创建应用的App Key和App Secret,这里主要告诉你在哪里找App Key和App Secret,因为等下需要用到。

详解android在mob平台实现qq登陆和分享

3.点击SDK下载

详解android在mob平台实现qq登陆和分享

4.选择ShareSDK

详解android在mob平台实现qq登陆和分享

选择配置我们主要选择下方配置,然后点击保存配置(下面我会说明为什么只选择这些配置)

详解android在mob平台实现qq登陆和分享

5.点击下载,就会弹出下载提示

详解android在mob平台实现qq登陆和分享

6.关于为什么只选择这些配置?

可以从上图中看出,无论是QQ还微博,微信等都需要获取他们平台的appId和appKey如果你直接使用平台的提供的appId和appKey是不能成功的。如果我想要实现这些功能,我们得先去那些平台获取他的appId和appKey。

详解android在mob平台实现qq登陆和分享

7.我创建的QQ开发者平台应用

下面是我创建成功的应用,说实话QQ的这个服务确实挺慢的,一般审核需要几天,可以是免费的原因吧。下面是创建应用的步骤。
1.成为个人开发者。
2.创建移动应用。

详解android在mob平台实现qq登陆和分享

2.把ShareSDK部署到android

1.新建一个moudle或者project

这个就不细说,比较简单。

2.配置你的build.gradle(Project)文件

如图所示,添加如图代码:

详解android在mob平台实现qq登陆和分享

代码如下:


classpath "com.mob.sdk:MobSDK:2018.0319.1724"

3.配置你的build.gradle(Module)文件

1.首先加入如图代码

详解android在mob平台实现qq登陆和分享

根据你的情况选择
代码如下,因为我的版本是android studio 4.2最新版,加入方法如下:


id 'com.mob.sdk'

如果是其他android studio 3点多的版本,添加方法代码:


apply plugin:'com.mob.sdk'

2.其次加入下图代码

详解android在mob平台实现qq登陆和分享

加入代码如下(建议使用自己申请的appId和appKey,如果你使用的是我QQ申请的appId和appKey话,你是成功不了,关于为什么成功不了,我下面将会说明):


   MobSDK {
       fp true //严格模式
   }

MobSDK {
       appKey "31c48ca47c70e"
       appSecret "2d7adbfcd73363bbbe41aeff60e41e4f"
       ShareSDK {
           loopShare true
           devInfo {
               SinaWeibo {
                   appKey "568898243"
                   appSecret "38a4f8204cc784f81f9f0daaf31e02e3"
                   callbackUri "http://www.sharesdk.cn"
               }
               QQ {
                   appId "101906011"
                   appKey "676d885e518445fed4d7d2341ff2d56f"
               }
               TencentWeibo {
                   appKey "801307650"
                   appSecret "ae36f4ee3946e1cbb98d6965b0b2ff5c"
                   callbackUri "http://www.sharesdk.cn"
               }
               QZone {
                   appId "100371282"
                   appKey "aed9b0303e3ed1e27bae87c33761161d"
               }
           }
       }
   }

3. 解释一下关于为什么成功不了

下面我创建的应用

详解android在mob平台实现qq登陆和分享

我们可以看一下在QQ平台创建的应用包名和应用签名如下

详解android在mob平台实现qq登陆和分享

然后我们在把他和我创建的android项目来对比一下
1.我的包名和他相同

详解android在mob平台实现qq登陆和分享

2.我们可以看一下我们的MD5是否相同
第一步:如果查看你的项目的MD5
找到图中的gradle

详解android在mob平台实现qq登陆和分享

点击图中红色圆圈处

详解android在mob平台实现qq登陆和分享

然后就可以查看MD5了

详解android在mob平台实现qq登陆和分享

第二步:将我的MD5的去掉':号',把大写改为小写,我们对比一下是相同的。

补充条件小彩蛋:如果你新建其他项目android项目的时候需要用到QQ的appId和appKey的话,你可以直接点击下图中的修改,修改你为你新项目的包名和MD5

详解android在mob平台实现qq登陆和分享

即可直接进行修改

详解android在mob平台实现qq登陆和分享

4.配置你的AndroidManifest.xml文件

加入如图回调和权限

详解android在mob平台实现qq登陆和分享

详解android在mob平台实现qq登陆和分享

代码如下:

权限:


   <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"/>
   <!-- 蓝牙分享所需的权限 -->
   <uses-permission android:name="android.permission.BLUETOOTH" />
   <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

回调代码:


<activity
    android:name="com.mob.tools.MobUIShell"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:configChanges="keyboardHidden|orientation|screenSize"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="stateHidden|adjustResize"
    tools:ignore="LockedOrientationActivity">
    <!-- QQ和QQ空间分享 QQ登录的回调必须要配置的 -->
    <intent-filter>
        <data android:scheme="tencent101906011" />
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>

<!-- 新浪微博客户端分享回调必须配置 -->
    <intent-filter>
        <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

注意事项
记得把如图红色圆圈处的101906011改为你的QQ平台创建的应用申请的appId

详解android在mob平台实现qq登陆和分享

5.配置activity.xml文件。

比较简单,主要添加几个控件用来接收数据

详解android在mob平台实现qq登陆和分享

代码如下


<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".MainActivity">

<TextView
       android:id="@+id/text"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginTop="24dp"
       android:text="名字"
       android:textSize="20sp"
       app:layout_constraintEnd_toEndOf="@+id/imageView"
       app:layout_constraintStart_toStartOf="@+id/imageView"
       app:layout_constraintTop_toBottomOf="@+id/imageView"></TextView>

<Button
       android:id="@+id/button"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginTop="340dp"
       android:text="QQ登录"
       app:layout_constraintEnd_toEndOf="parent"
       app:layout_constraintHorizontal_bias="0.476"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toTopOf="parent" />

<ImageView
       android:id="@+id/imageView"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginTop="56dp"
       android:src="@mipmap/ic_launcher_round"
       app:layout_constraintEnd_toEndOf="parent"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toTopOf="parent" />

<TextView
       android:id="@+id/textView"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginTop="24dp"
       android:text="性别"
       app:layout_constraintEnd_toEndOf="@+id/text"
       app:layout_constraintStart_toStartOf="@+id/text"
       app:layout_constraintTop_toBottomOf="@+id/text" />

<Button
       android:id="@+id/button2"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginTop="50dp"
       android:text="QQ分享"
       app:layout_constraintEnd_toEndOf="parent"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toBottomOf="@+id/button" />
</androidx.constraintlayout.widget.ConstraintLayout>

6.配置Activity.java文件

1.记得把MobSDK.init里面的AppKey和AppSecret改为你自己申请你的。

2.qq登录代码


Platform qq = ShareSDK.getPlatform(QQ.NAME);
qq.SSOSetting(false); // 设置false表示使用SSO授权方式
qq.authorize();

thirdLoginId = qq.getDb().getUserId();
name = qq.getDb().getUserName();
image = qq.getDb().getUserIcon();
sex = qq.getDb().getUserGender();
Toast.makeText(MainActivity.this,"name="+image,Toast.LENGTH_LONG).show();
TextView textView=findViewById(R.id.text);
textView.setText(name);
Log.e("Toast","image="+thirdLoginId);
ImageView imageView=findViewById(R.id.imageView);
Glide.with(MainActivity.this)
      .load(image)
      .into(imageView);
TextView textView1=findViewById(R.id.textView);
if(sex!=null){
  if(sex=="m"){
      sex= "男";
  }else {
      sex="女";
  }
}
textView1.setText(sex);

记得导入Glide依赖,因为获取的图片地址为网络图片地址


implementation 'com.github.bumptech.glide:glide:4.11.0'

3.qq分享代码


OnekeyShare oks = new OnekeyShare();
// title标题,微信、QQ和QQ空间等平台使用
oks.setTitle("分享");
// titleUrl QQ和QQ空间跳转链接
oks.setTitleUrl("http://sharesdk.cn");
// text是分享文本,所有平台都需要这个字段
oks.setText("我是分享文本");
// setImageUrl是网络图片的url
oks.setImageUrl("https://hmls.hfbank.com.cn/hfapp-api/9.png");
// url在微信、Facebook等平台中使用
oks.setUrl("http://sharesdk.cn");
// 启动分享GUI
oks.show(MobSDK.getContext());

4.总体代码


package com.example.mobsharetest;

import androidx.appcompat.app.AppCompatActivity;

import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import com.mob.MobSDK;

import org.w3c.dom.Text;

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.sina.weibo.SinaWeibo;
import cn.sharesdk.tencent.qq.QQ;

public class MainActivity extends AppCompatActivity {
   private Button button;
   private Button button2;
   String thirdLoginId;
   String name;
   String image;
   String sex;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       MobSDK.init(this, "31c48ca47c70e","2d7adbfcd73363bbbe41aeff60e41e4f");
       MobSDK.submitPolicyGrantResult(true, null);
       button=findViewById(R.id.button);
       button.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               Platform qq = ShareSDK.getPlatform(QQ.NAME);
               qq.SSOSetting(false); // 设置false表示使用SSO授权方式
               qq.authorize();

thirdLoginId = qq.getDb().getUserId();
               name = qq.getDb().getUserName();
               image = qq.getDb().getUserIcon();
               sex = qq.getDb().getUserGender();
               Toast.makeText(MainActivity.this,"name="+image,Toast.LENGTH_LONG).show();
               TextView textView=findViewById(R.id.text);
               textView.setText(name);
               Log.e("Toast","image="+thirdLoginId);
               ImageView imageView=findViewById(R.id.imageView);
               Glide.with(MainActivity.this)
                       .load(image)
                       .into(imageView);
               TextView textView1=findViewById(R.id.textView);
               if(sex!=null){
                   if(sex=="m"){
                       sex= "男";
                   }else {
                       sex="女";
                   }
               }
               textView1.setText(sex);
           }
       });

button2=findViewById(R.id.button2);
       button2.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               OnekeyShare oks = new OnekeyShare();
// title标题,微信、QQ和QQ空间等平台使用
               oks.setTitle("分享");
// titleUrl QQ和QQ空间跳转链接
               oks.setTitleUrl("http://sharesdk.cn");
// text是分享文本,所有平台都需要这个字段
               oks.setText("我是分享文本");
// setImageUrl是网络图片的url
               oks.setImageUrl("https://hmls.hfbank.com.cn/hfapp-api/9.png");
// url在微信、Facebook等平台中使用
               oks.setUrl("http://sharesdk.cn");
// 启动分享GUI
               oks.show(MobSDK.getContext());
           }
       });
   }

}

步骤有点复杂,因为这个功能确实比较难以实现,如果有什么问题的话,可以提出来,一不小心就写14000多个字了

详解android在mob平台实现qq登陆和分享

来源:https://blog.csdn.net/qq_45137584/article/details/113244389

标签:android,mob,qq,登陆,分享
0
投稿

猜你喜欢

  • MyBatis 如何配置多个别名 typeAliasesPackage

    2021-11-16 06:35:54
  • 解析在内部循环中Continue外部循环的使用详解

    2023-09-24 08:03:50
  • 使用C语言实现五子棋游戏

    2021-07-17 18:25:28
  • Java Http的基础概念了解

    2021-08-12 04:23:28
  • 实例分析java中重载与重写的区别

    2021-09-11 01:49:38
  • Android onClick方法与setOnClickListener方法对比

    2022-02-09 22:21:40
  • C#程序中创建、复制、移动、删除文件或文件夹的示例

    2022-04-28 11:26:06
  • SpringBoot集成Spring security JWT实现接口权限认证

    2023-02-02 07:31:08
  • Spring整合MyBatis图示过程解析

    2023-11-13 11:45:09
  • 最最常用的 100 个 Java类分享

    2023-08-21 08:45:05
  • IDEA如何进行全局搜索图文教程

    2022-10-14 13:39:45
  • 安卓模拟器genymotion的安装与使用图文教程

    2021-12-13 19:28:36
  • Java基于JDK 1.8的LinkedList源码详析

    2021-07-15 03:29:26
  • springboot v2.0.3版本多数据源配置方法

    2023-07-27 06:37:57
  • 详解Android自定义控件属性

    2023-09-27 18:00:34
  • 详解MyBatis日志如何做到兼容所有常用的日志框架

    2022-05-28 08:24:17
  • Java二维数组计算集合总结

    2023-02-15 16:38:14
  • Spring Boot 2.X 快速集成单元测试解析

    2023-11-11 02:45:05
  • Spring Boot 集成PageHelper的使用方法

    2021-10-04 19:16:30
  • IDEA不编译除了.java之外的文件的解决办法(推荐)

    2023-09-16 15:50:44
  • asp之家 软件编程 m.aspxhome.com